2010-06-06 7 views
3

J'utilise une servlet pour manipuler l'ontologie. J'ai obtenu le résultat de ma requête SPARQL et je veux afficher (imprimer) ce résultat dans JSP (Servlet).Impression du jeu de résultats jena en html (servlet/jsp)

Le segment de code suivant peut être utilisé pour imprimer le résultat dans la console.

com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr); 
QueryExecution qe = QueryExecutionFactory.create(query,model); 
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect(); 
ResultSetFormatter.out(System.out, rs); 

Une idée?

Répondre

1

Ce segment de code va à votre Servlet ou Vous pouvez implémenter cela en utilisant la classe java séparée.

com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr); 
QueryExecution qe = QueryExecutionFactory.create(query,model); 
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect(); 

while(rs.hasNext()){ 

QuerySolution binding = rs.nextSolution();      
System.out.println(binding.get("ind")); 
} 

Note:

"ind" est une variable que vous référenceurs dans la requête SPARQL clause SELECT.

Merci!

+0

Ceci est fondamentalement le même que ma réponse, seulement vous l'imprimez au mauvais endroit. La pratique normale consiste à afficher les résultats dans le fichier JSP (la vue) et non dans une servlet (le contrôleur). Vous devez créer un modèle et le transmettre à la vue, comme indiqué dans ma réponse. – BalusC

2

Je ne fais pas Jena, mais vous essentiellement comme itérer sur le com.hp.hpl.jena.query.ResultSet et l'analyse des informations dans un List<RowObject>RowObject est votre propre classe de modèle qui représente une seule ligne que vous souhaitez afficher dans un tableau HTML . Après le mappage, placez le List<RowObject> dans l'étendue de la demande et transférez la demande à un JSP.

List<RowObject> results = getItSomeHow(); 
request.setAttribute("results", results); // Will be available as ${results} in JSP 
request.getRequestDispatcher("page.jsp").forward(request, response); 

Ensuite, dans JSP, utilisez JSTLc:forEach itérer sur la List<RowObject>, l'impression d'un tableau HTML.

<table> 
    <c:forEach items="${results}" var="rowObject"> 
     <tr> 
      <td>${rowObject.someProperty}</td> 
      <td>${rowObject.anotherProperty}</td> 
      ... 
     </tr> 
    </c:forEach> 
</table> 

Mise à jour en fonction de votre autre réponse, voici comment vous pouvez créer un List<RowObject> basé sur ResultSet de Jena:

List<RowObject> results = new ArrayList<RowObject>(); 
while (rs.hasNext()) { 
    RowObject result = new RowObject(); 
    QuerySolution binding = result.nextSolution(); 
    result.setInd(binding.get("ind")); 
    result.setSomethingElse(binding.get("something_else")); 
    // ... 
    results.add(result); 
} 

et l'afficher comme suit:

... 
<td>${rowObject.ind}</td> 
<td>${rowObject.somethingElse}</td> 
... 
+0

:: Il n'est pas possible de créer la liste et le nombre d'erreurs a été obtenu. Y at-il un moyen de le faire, sauf JSTL.stuck ici..aide moi bro! Merci beaucoup! – smartcode

+0

Les erreurs indiquent quelque chose sur la cause du problème. Vous ne devriez pas les ignorer, mais les interpréter et résoudre le problème en conséquence. Si vous ne pouvez pas interpréter les erreurs, posez une question ici. – BalusC

+0

:: Hey frère .. J'ai eu la réponse à ma manière! Merci beaucoup pour votre réponse et commentaires! – smartcode

Questions connexes