在我的应用程序中,我使用的是 JSF 1.2。我不想使用 facelets taglib,所以我包含了一个使用 jsp:include 属性的 JSP。我想将一个变量传递给子页面,它将决定样式类的值。下面是 parent.jsp 的代码
<f:view>
...
<f:subview id="navigation">
<jsp:include page="/subpage/child.jsp">
<jsp:param value="page9" name="pageName"/>
</jsp:include>
</f:subview>
...
</f:view>
子jsp是
<f:subview id="navigation">
...
<t:commandLink id="page9" value="mylink" action="#{manageBean.someAction}"
styleClass="#{param.pageName == 'page9'?'stepLinkActive':'stepLink'}" />
...
</f:subview>
在上面的代码 stepActiveLink 类没有被应用到 myLink。事实上 #{param.pageName} 值是空白的。
我在 SO 上找到了这个链接,如果我使用下面的命令链接,它就可以工作
<c:if test='${param.pagename eq "page9"}'>
<t:commandLink id="page9"
value="#{msgs['DICT.ISSUE_CONTROL.SPECIAL_INFO']} "
action="#{bondIssueBean.gotoModifyPage9}" styleClass="stepLinkActive" />
</c:if>
<c:if test='${param.pagename ne "page9"}'>
<t:commandLink id="page9"
value="#{msgs['DICT.ISSUE_CONTROL.SPECIAL_INFO']} "
action="#{bondIssueBean.gotoModifyPage9}" styleClass="stepLink" />
</c:if>
我有很多 commandLinks 需要复制 commandlink 定义来改变样式类。我想知道,如果任何其他参数被传递,那么它可能会增加重复代码。我的问题是
- 为什么 JSF EL 无法识别参数值 - ${param.paramName}?我也尝试使用 #{param['pageName']} 访问参数变量,但没有运气。
- 我如何替换上面的 if..else 以便我可以有单个命令链接定义?