jsp:param不显示期望值

时间:2014-06-15 21:29:41

标签: java spring jsp

在我的春季项目中,我的观点有两层:

1)我的控制器中的每个方法直接映射一个jsp页面,如:

<jsp:include page="../../common/listagem.jsp">
    <jsp:param name="name" value="Usuario"/>
    <jsp:param name="elements" value="{['login','senha','pnome','unome','email']}"/>
</jsp:include>

2)我的jsp页面common / listagem.jsp是这样的:

<%@ include file="../include/header.jsp" %>

<sec:authorize access="hasPermission(#user, 'cadastra_${param.name}')">
<p>
    <button type="button" class="btn btn-sm btn-link link" data-action="/${param.name}/cadastra">
        Cadastrar novo ${param.name}
    </button>
</p>
</sec:authorize>

<table class="bordered">
    <thead>
        <tr>
        <c:forEach var="item" items="${param.elements}">
            <th> <c:out value="${item}"/> </th>
        </c:forEach>
        </tr>
    </thead>

    <tbody class="content">
    </tbody>

    <tfoot>
        <tr>
            <sec:authorize access="hasPermission(#user, 'altera_${param.name}')">
                <td class="comando" data-nome="Altera" data-action="/${param.name}/altera"></td>
            </sec:authorize>
            <sec:authorize access="hasPermission(#user, 'remove_${param.name}')">
                <td class="comando" data-nome="Remove" data-action="/${param.name}/remove"></td>
            </sec:authorize>
        </tr>
    </tfoot>
</table>

<c:url value="/${param.name}/listagem.json" var="listagem"/>
<script>
$(document).ready(function(){
    load_content("${listagem}", $('table.bordered'));
});
</script>

<%@ include file="../include/footer.jsp" %>

我的问题与上面的页面完全吻合。这段代码的最终结果是:

但是应该只显示顶部列的标题和代码:

<c:url value="/${param.name}/listagem.json" var="listagem"/>
<script>
$(document).ready(function(){
    load_content("${listagem}", $('table.bordered'));
});
</script>

应该用来自服务器的数据填充表格(此代码适用于我的其他项目,我不使用包含文件和jsp:param)。

任何人都可以看到此代码出了什么问题?

2 个答案:

答案 0 :(得分:0)

您可以尝试JSP JSTL Functions,但它更像是JSON字符串,请尝试使用Jackson JSON Parser

查找Jackson解析器here的教程。

示例代码:

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

<c:set var="elements" value="${param.elements}" />
<c:forEach var="item"
    items="${fn:split(fn:substring(elements,2,fn:length(elements)-2),',')}">
    <c:out value="${item}" />
</c:forEach>

输出:

'login' 'senha' 'pnome' 'unome' 'email' 

答案 1 :(得分:0)

好的,我使用数组来解决这个问题,用于存储值,如:

<jsp:param name="elements" value="login"/>
<jsp:param name="elements" value="pnome"/>
<jsp:param name="elements" value="unome"/>
<jsp:param name="elements" value="email"/>

并在常见的jsp页面中:

                    <c:forEach var="item" items="${paramValues.elements}" varStatus="status">
                        <th class="col" data-property="<c:out value="${item}"/>">
                            <c:out value="${paramValues.label[status.index]}"/>
                        </th>
                    </c:forEach>