php函数 - jsp等价

时间:2010-10-25 19:49:10

标签: php jsp

php中的

我这样做:

<?php
function displaySomething($list) {
    foreach ($list as $item) {
    ?>
        <html code here><?php echo $item["field"] ?><html code again etc>
    <?php } 
}
?>

然后我用它在我的页面中的不同位置显示不同的列表。

有没有办法用jsp实现这个目标?使用参数创建方法,我可以将html与java结合使用?

<%! %> admits only java code, can't cut in with html code.

4 个答案:

答案 0 :(得分:1)

为此,您必须创建一个标记库。

有两种方法可以定义:

  • 通过TagLib类和taglib描述符 - 繁琐的过程,以及针对您案例的过度杀伤

  • 标记文件 - see here了解如何操作。简而言之 - 您指定将在找到标记时执行的代码片段(使用jsp语法)。不同之处在于您将拥有<c:forEach>,以及内部 - 标签的引用。

答案 1 :(得分:1)

没有。 PHP被解析,Java被编译成字节码。 PHP有更多的自由,因为执行者总是看到源代码。

但是,您可以将HTML代码定义为字符串文字,并在for-each循环中将其与item.getField().ToString()一起打印出来。显然请记住,for-for循环中的每个循环都没有什么不同的语法,但你应该已经知道了; - )

答案 2 :(得分:0)

您不能在<%! %>代码中包含HTML代码。

我知道你知道完全你在寻找什么,但在JSP中使用JSP CUSTOM TAGs的方法类似。

答案 3 :(得分:0)

在/ WEB-INF / tags目录中创建.tag文件,例如myfunction.tag,其中包含以下内容:

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

<%@ attribute name="list" required="true" type="java.util.Collection" %>

<c:forEach var="item" items="${list}" varStatus="rowCounter">
<html code here>${item.field}<html code again etc>
</c:forEach>

or uglier:

<% Collection list = (Collection)pageContext.getAttribute("list");%>
<% for(Object o: list) { %>
<html code here><%=((MyType)o).getField()%><html code again etc>
<% } %>

然后您可以使用以下代码在任何.jsp页面上使用它:

<%@ taglib prefix="x" tagdir="/WEB-INF/tags" %>

...

<x:myfunction list="${someCollection}"/>