簡體   English   中英

發送列表到jsp標簽

[英]Send list to jsp tag

我想發送list元素(位於我的JSP上):

${mylist}

對於我的自定義標簽mytag.tag,這就是我的JSP頁面中的內容:

<tags:mytag list="${mylist}" ></tagsmytag>

但是當我這樣發送它時,我無法訪問其元素,這是mytag.tag:

<%@ taglib uri="http://www.springframework.org/tags/form" prefix="springForm"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@attribute name="list" required="true"%>

<c:forEach items="${pageScope.list}"  var="listVar">
    <option value="${listVart[0]}">${listVar[1]}</option>
</c:forEach>

后端控制器:

@ModelAttribute("mylist")
List<Permission> getAllActivePermissions(){
    return permissionService.getAllActivePermissions();
}

例外是:

javax.el.PropertyNotFoundException: Property '0' not found on type java.lang.String
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:214)
at javax.el.BeanELResolver.property(BeanELResolver.java:325)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
at org.apache.jsp.tag.webmultiple_tag._jspx_meth_c_005fforEach_005f1(webmultiple_tag.java:454)
at org.apache.jsp.tag.webmultiple_tag._jspx_meth_springForm_005fselect_005f1(webmultiple_tag.java:413)
at org.apache.jsp.tag.webmultiple_tag._jspx_meth_c_005fotherwise_005f0(webmultiple_tag.java:375)
at org.apache.jsp.tag.webmultiple_tag.doTag(webmultiple_tag.java:222)
at org.apache.jsp.WEB_002dINF.pages.roles.newRole_jsp._jspx_meth_tags_005fmultiple_005f0(newRole_jsp.java:674)
at org.apache.jsp.WEB_002dINF.pages.roles.newRole_jsp._jspx_meth_springForm_005fform_005f0(newRole_jsp.java:566)
at org.apache.jsp.WEB_002dINF.pages.roles.newRole_jsp._jspService(newRole_jsp.java:378)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:209)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:267)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)

那是什么問題呢? 將列表發送到標簽的最佳策略是什么?

嘗試:

<c:forEach items="${mylist.list}"  var="listVar" varStatus="i">
    <option value="${listVar[0]}">${listVar[1]}</option>
</c:forEach>

在這里, mylistModelAttributelist the name of List要從controller發送list the name of List 還使用c:foreach標記的varStatus屬性,切勿direct index like you have used使用direct index like you have used使用direct index like you have used 如果要使用它,則將其放在條件下, if list size > 0則它將放入其中。

您也有可變的拼寫錯誤:

<option value="${listVar[0]}">您使用過listVart

mkyong的簡單教程。

我終於得到了解決方案,我必須為屬性(列表)指定類型(列表):

<%@attribute name="list" required="true"%>

成為 :

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

設置值

     <c:set var="list" value=${myList} scope="request"/> 

    <c:forEach items="${list}"  var="listVar" varStatus="i">
        <option value="${listVar[0]}">${listVar[1]}</option>
    </c:forEach>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM