问题:“[action]”不接受任何表达

时间:2011-01-15 11:31:41

标签: struts2

我尝试使用以下代码:

<li>
    <% for (int i=0; i<parentList.size(); i++) {
        Role p = parentList.get(i); 
    %>
        <li><a href="<s:url action="<%=p.getFunclink() %>"/>"><%=p.getFuncname() %></a>
        <ul>
            <% for (int j=0; j<roleList.size(); j++) {
                Role c = roleList.get(j);
                if (!c.getFuncid().equalsIgnoreCase(c.getParentfunc()) && c.getParentfunc().equalsIgnoreCase(p.getFuncid()))
                {
                %>
                    <li><a href="<s:url action="<%=c.getFunclink() %>"/>"><%=c.getFuncname() %></a>                     
                <%
                }
            }   
            %>
        </ul>
    <% } %>
    </li>

但它会引发错误:

    JSPG0227E: Exception caught while translating /menu.jsp:  
/menu.jsp(95,17) --> JSPG0124E: According to TLD or attribute directive in tag file, attribute "[action]" does not accept any expressions. Value of expression is: "[%=p.getFunclink() %]".

我该如何解决?谢谢!

1 个答案:

答案 0 :(得分:2)

Struts标签不能接受表达式,因此:

<s:url action="<%=p.getFunclink() %>"/>

无效。

  • 首先,完全避免使用scriptlet。
  • 其次,请使用<s:iterator/>标记来迭代您的馆藏。