【问题标题】:According to TLD or attribute directive in tag file, attribute name does not accept any expressions根据标记文件中的 TLD 或属性指令,属性名称不接受任何表达式
【发布时间】:2013-08-24 23:32:59
【问题描述】:

我在 JSP 中编写了以下代码。

<%
String p_loginPassword = OpeCommon.LOGIN_PASSWORD;
String p_encryptCode = OpeCommon.encriptPassword(OpeCommon.KEY_USER_ID, OpeCommon.KEY_USER_PASSCODE);
%>
<s:url id="printURL" action="actMod" method="printout">
    <s:param name="<%=OpeCommon.LOGIN_PASSWORD %>"><%=OpeCommon.encriptPassword(OpeCommon.KEY_USER_ID, OpeCommon.KEY_USER_PASSCODE)%></s:param>
</s:url>

显示错误:根据标签文件中的 TLD 或属性指令,属性名称不接受任何表达式

我该怎么写,请给我一些建议。

【问题讨论】:

    标签: java jsp struts2 jsp-tags ognl


    【解决方案1】:

    不要在struts标签中使用scriptlet,完全不要在JSP中使用,如果不行你可以试试

    <s:set var="loginPassword"><%=OpeCommon.LOGIN_PASSWORD %></s:set>
    <s:param name="%{#loginPassword}"><%=OpeCommon.encriptPassword(OpeCommon.KEY_USER_ID, OpeCommon.KEY_USER_PASSCODE)%></s:param>
    

    请注意,可以通过 OGNL 表达式访问常量,并且该表达式在 struts 标记中是允许的。但是,它适用于 OGNL 语法,您应该为静态内容提供 FQCN。常量不需要在配置中启用静态访问,但需要调用静态方法。如果您允许静态访问,那么一切都可以通过 OGNL 表达式完成,如果不仅可以访问常量,例如

    <s:param name="%{@com.package.OpeCommon@LOGIN_PASSWORD}">
    

    【讨论】:

    • 我很高兴有帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2018-04-19
    • 2014-06-23
    • 2014-03-17
    • 1970-01-01
    相关资源
    最近更新 更多