当前位置: 首页 > 面试题库 >

JSTL c:选择c:在JSF页面中不工作时

公冶子安
2023-03-14
问题内容

考虑以下 jstl 选择:

<c:choose>
    <c:when test="#{AuthMsgBean.rw['2'] ne null}">
        Display Text
    </c:when>

    <c:otherwise>
        <ph:outputText id="pan" value="Component pan could not be created." />
    </c:otherwise>
</c:choose>

AuthMsgBean = Bean

rw =地图

‘2’=键

题:

当我简单地显示#{AuthMsgBean.rw['2'] ne null}值时,它会显示正常(true),但是一旦我尝试将值解析<c:when test=""/>为when标记,就好像测试始终为false一样。

如果我在测试(test="true")中输入true,则显示“显示文本”。

可能<c:when>是在#{AuthMsgBean.rw['2'] ne null}表达式之前对标记求值了吗?

如果是这样,是否有解决方法?


问题答案:

JSTL和JSF不会像您期望的那样同步运行。在JSF视图构建期间,它是JSTL,该JSTL从上到下首先运行以生成仅包含JSF标签的视图。在JSF视图渲染期间,正是JSF从上到下再次运行以生成一堆HTML。

显然,#{AuthMsgBean}轮到JSTL运行时,它不在范围内。当将标签放置在JSF迭代组件(例如)中时,可能会发生这种情况<h:dataTable>

无论如何,您不想在这里使用JSTL。利用JSF rendered属性。

<h:panelGroup rendered="#{not empty AuthMsgBean.rw['2']}">
    Display Text
</h:panelGroup>
<h:outputText id="pan" value="Component pan could not be created." rendered="#{empty AuthMsgBean.rw['2']}" />


 类似资料:
  • 我试图在表中使用日期选取器添加和删除行。默认情况下,日期选取器不起作用。但是我点击了添加行按钮,它已经工作了。我找不到解决方案。 请参考小提琴位置。

  • 请求yo帮助分页链接。在我的数据库中,我有3条记录,我想每页显示一条记录。当我选择分页链接的下一个数字时,数据没有被提取。事情是当我单击分页链接的第2个数字时,echo var_dump()显示Result是空的,并且我没有获得echo$data->电子邮件的任何值。但是当我搜索时第一次能够显示单个记录,问题只是分页的下一个链接,那么可能会有什么错误呢?我不能得到一个答案,我不确定发生了什么,所以

  • 我对此感到困惑。我搜索了2个多小时,无法理解发生了什么。 我有一个列表视图,我希望项目(行)是可选的。为了实现这一点,我设置了一个选择器作为行布局的背景。 ListView在片段中是这样定义的。xml布局文件: 选择器(bg_row_contact.xml)如下: 我的行布局(row_contact.xml)如下所示: 现在,我有一个自定义适配器,在其中我这样做是为了在用户单击该行时将项目标记为选

  • 此代码不起作用。我不知道我需要添加什么资源。下面是Datepicker的链接:http://jsfiddle.net/rMhVz/1030/ 我的代码在下面。我真的需要让它发挥作用。谢谢你的帮助。提前谢谢。

  • security-context.xml > http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.0.xs

  • 所以当我在选项1中输入我的输入后,我选择继续。我的输入信息在选择选项2时消失了。我刚开始我的编程课程,所以请给我很多建议。这是这里的输出输入图像描述