java jsp页面中<c:choose>中<c:when><c:otherwise>不显示内容
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java jsp页面中<c:choose>中<c:when><c:otherwise>不显示内容相关的知识,希望对你有一定的参考价值。
list中有值,页面只显示jsp include 的
页面显示一半,一般来说是系统报错了,你把页面右键,选择查看源文件,可以看到错误提示的。追问怎样查看源文件
网页源代码显示是<hr/>下是空白
哦,这样的话,应该是正常的,那么这样处理,在jsp 13,17,65那几个入口,随便打点什么不同的字符,然后运行一下,确认进入了哪个when,或者otherwise
追问<c:when test="$err !='' ">
$err
</c:when>
他会调到这个when中,但没有存err这个值啊,应该是空的?
正常代码会直接调到第二个if中
可能是 err是null吧,你调试一下,确认进入第二个if,另外,在第二个if中一样加上 request.setAttribute("err",err);
参考技术A </c:choose>应该在form上面 参考技术B 运行效果及有报错贴上报错的,贴这些很难看得出来。JSF 页面中的 <c:choose><c:when> 不起作用,似乎总是评估为 false
【中文标题】JSF 页面中的 <c:choose><c:when> 不起作用,似乎总是评估为 false【英文标题】:<c:choose><c:when> in JSF page does not work, seems to always evaluate false 【发布时间】:2013-12-26 23:53:49 【问题描述】:在我的 JSF 页面中,我使用 <c:choose><c:when>
标记有条件地显示内容。但是,它不起作用,因为它似乎总是评估 false
。
例如
<h:outputText value="#pollInfo.active -" />
<c:choose>
<c:when test="#pollInfo.active">
<h:outputText value="Active" />
</c:when>
<c:otherwise>
<h:outputText value="Deactive" />
</c:otherwise>
</c:choose>
肯定有一些带有active=true
的项目,由<h:outputText>
确认,但它只为所有项目打印Deactive
。你可以在下图中看到实际的输出:
这是怎么引起的,我该如何解决?
【问题讨论】:
【参考方案1】:症状和屏幕截图表明,#pollInfo
表示迭代 UI 组件的当前迭代项,例如 <ui:repeat>
、<h:dataTable>
、<p:tabView>
、<p:dataTable>
等。
JSTL 标记在视图构建期间运行,即基于 XHTML 源代码构建 JSF 组件树的时刻。此类迭代 UI 组件的 var
属性仅在视图渲染期间可用,即基于 JSF 组件树生成 HTML 输出的那一刻。
换句话说,它们不会“同步”运行。在视图构建期间,#pollInfo
始终为 null
。
在这种特殊情况下,您需要 JSF 组件的 rendered
属性。
<h:outputText value="Active" rendered="#pollInfo.active" />
<h:outputText value="Deactive" rendered="#not pollInfo.active" />
或者,如果您打算有条件地渲染较大的代码,请将所有代码都包装在 <ui:fragment>
中:
<ui:fragment rendered="#pollInfo.active">
<h:outputText value="Active" />
<!-- Some more components here if necessary. -->
</ui:fragment>
<ui:fragment rendered="#not pollInfo.active">
<h:outputText value="Deactive" />
<!-- Some more components here if necessary. -->
</ui:fragment>
鉴于您有一个纯 if-else,另一种选择是在 EL 中使用条件运算符:
<h:outputText value="#pollInfo.active ? 'Active' : 'Deactive'" />
额外的好处是,您最终得到的代码要少得多。
另见:
JSTL in JSF2 Facelets... makes sense?【讨论】:
以上是关于java jsp页面中<c:choose>中<c:when><c:otherwise>不显示内容的主要内容,如果未能解决你的问题,请参考以下文章
JSTL--JSTL表达式:c:set,c:if,c:choose,--drp214