【发布时间】:2012-09-05 02:25:45
【问题描述】:
在我的应用程序中,我使用的是 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>
在上面的代码步骤中,ActiveLink 类没有被应用到 myLink。事实上 #{param.pageName} 值是空白的。
我在 SO 上找到了这个 link,如果我使用下面的命令链接,它就可以工作
<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 以便我可以有单个命令链接定义?
【问题讨论】:
-
试试 JSP EL 表示法:
styleClass="${param.pageName == 'page9'?'stepLinkActive':'stepLink'}". -
@BalusC 我期待你至少会评论我的问题.. :) 谢谢。关于您的建议,我收到 jsp 错误“根据标记文件中的 TLD 或属性指令,属性 styleClass 不接受任何表达式”
-
好的。
child.jsp中真的有另一个<f:subview id="navigation">吗?应该只有一个。删除它。 -
哦不..我只是使用单子jsp..我会删除它
-
我发现了一个解释原因的旧错误报告。我已经发布了答案。
标签: jsp jsf parameters el jsf-1.2