0

我有一个方法,这个方法返回一个项目列表,在java bean里面它现在可以工作我想在jsp里面打印方法的输出,但是我搜索了很多找不到有用的东西,如果有人可以帮助我我真的感谢这是我打印列表的方法

public static List printDirect() {
    List returned_list = new ArrayList ();

    //StringBuilder text=new  StringBuilder();
    manager = OntologyManagement.ontology.getOWLOntologyManager();
    factory = manager.getOWLDataFactory();

    reasonerFactory = new StructuralReasonerFactory();
    progressMonitor = new ConsoleProgressMonitor();
    config = new SimpleConfiguration(progressMonitor);
    reasoner = reasonerFactory.createReasoner(ontology, config);
    // Ask the reasoner to do all the necessary work now
    reasoner.precomputeInferences();
    OWLClass thing = factory.getOWLThing();
    NodeSet<OWLClass> subClses = reasoner.getSubClasses(thing, true);
    Set<OWLClass> clses = subClses.getFlattened();
    System.out.println("Subclasses of owl:thing =  ");
    for (OWLClass cls : clses) {
        String row = cls.toString();
        String[] split = row.split("#");
        String word = split[1].substring(0, (split[1].length() -1));
        returned_list.add(word);
        System.out.println("    " + word);
    }
    return returned_list;
}
4

4 回答 4

0

所以你需要做一些事情来完成这项工作。

首先,您需要将列表加载到 JSP 中的变量中。我不知道你的类的包或名称,所以把“com.yourpath”换成你的包名,把“YourClass”换成你的类名。

<%
    java.util.List list = com.yourpath.YourClass.printDirect();
%>

接下来,您需要将“列表”添加到 pageContext 以便您可以使用 JSTL 在其上循环:

<%
    pageContext.setAttribute("list", list);
%>

最后,您可以使用 JSTL 轻松地遍历列表:

List contents:<br>
<c:forEach var="element" items="${list}">
    ${element}<br>
</c:forEach>

您应该考虑在页面顶部使用 @page 以导入您的类,这样上面的代码就不会看起来那么混乱:

<%@ page import="com.yourpath.YourClass" %>
<%@ page import="java.util.List" %>

所以把它放在一起看起来像:

<%@ page import="com.yourpath.YourClass" %>
<%@ page import="java.util.List" %>

<%
    List list = YourClass.printDirect();
    pageContext.setAttribute("list", list);
%>

List contents:<br>
<c:forEach var="element" items="${list}">
    ${element}<br>
</c:forEach>

以下应该在没有您的课程的情况下工作,以便您轻松测试您的课程是否有任何问题,或者只是一般的技术:

<%
    java.util.Map map = java.lang.System.getenv();

    pageContext.setAttribute("map", map);
%>

<c:forEach var="element" items="${map}">
    ${element.key} = ${element.value}<br>
</c:forEach>

当然,您可以跳过创建变量并将 printDirect() 的内容直接加载到 pageContext 中,就像这样,节省了一行代码:

<%
    pageContext.setAttribute("list", com.yourpath.YourClass.printDirect());
%>
于 2014-07-15T15:59:01.333 回答
0

单独的 JSP 没有用于测试或迭代的任何内容,因此您必须使用JSTL

话虽如此,您的问题已经在How to iterate an ArrayList inside a HashMap using JSTL? 中有答案?.

于 2014-07-14T22:36:09.307 回答
0

您可能会发现此链接很有用,

如何使用java方法在jsp中打印arraylist

通过使用 scriptlet,您可以迭代要打印的列表。但这不是一个好习惯。改用 JSTL 可以让您的工作更轻松。

于 2014-07-15T05:33:27.890 回答
0

首先像这样在jsp中获取List对象

<%
    List list = fullQualifiedClassName.printDirect();
%>

然后使用 JSTL 遍历 listObject

<c:forEach items="${list}" var="item">
    ${item}<br>
</c:forEach>

不要忘记添加这个以及必要的imports

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

你甚至可以使用 simpleScriptlets来迭代List(但不推荐)

<% for (int i=0;i<list.size();i++)
  {
     out.println(list.get(i));  
  } 
%>

或者

<%  Iterator iterator = list.iterator();
    while (iterator.hasNext()) {    
        out.println(iterator.next());
    }
 %>
于 2014-07-15T16:22:07.850 回答