dataTable 将空值传递给 Java 后端
dataTable passing null values to Java backend
我已经创建了一个jsf文件,最重要的部分在这里:
h:dataTable value="#{gatekeeperStatusBean.list}" var="item"
styleClass="table-data"
headerClass="table-header"
rowClasses="table-odd-row,table-even-row">
<h:column><f:facet name="header">ID</f:facet>#{item.id}</h:column>
<h:column><f:facet name="header">Name</f:facet>#{item.name}</h:column>
<h:column><f:facet name="header">Status</f:facet>
<c:if test="#{gatekeeperStatusBean.isLogged(item)}">
<strong>LOGGED</strong>
</c:if>
<c:if test="#{not gatekeeperStatusBean.isLogged(item)}">
<strong>LOGGED OUT</strong>
</c:if>
</h:column>
</h:dataTable>
在第三列"Status"我想打印出看门人是否在数据库中登录。所有其他带有 #{item.id} 的列 ID 和带有 #{item.name} 的名称正在打印有效的非空值。当我想使用 #{gatekeeperStatusBean.isLogged(item)} 方法填充状态时,它显然将 NULL 项目值传递给 Java 方法。有人可以解释为什么会这样吗?
请参考答案 and for the question c:when and c:if don't work。
您可以使用替代方案
<h:column rendered="#{gatekeeperStatusBean.isLogged(item)}">
<f:facet name="header">LOGGED</f:facet>
<h:column rendered="#{not gatekeeperStatusBean.isLogged(item)}">
<f:facet name="header">LOGGED OUT</f:facet>
或者bean中有一个方法
public void getStatus(Item item)
{
return isLogged(item) ? "LOGGED" : "LOGGED OUT" ;
}
和其他领域一样直接使用
<h:column><f:facet name="header">Name</f:facet>
#{gatekeeperStatusBean.status}
</h:column>
我已经创建了一个jsf文件,最重要的部分在这里:
h:dataTable value="#{gatekeeperStatusBean.list}" var="item"
styleClass="table-data"
headerClass="table-header"
rowClasses="table-odd-row,table-even-row">
<h:column><f:facet name="header">ID</f:facet>#{item.id}</h:column>
<h:column><f:facet name="header">Name</f:facet>#{item.name}</h:column>
<h:column><f:facet name="header">Status</f:facet>
<c:if test="#{gatekeeperStatusBean.isLogged(item)}">
<strong>LOGGED</strong>
</c:if>
<c:if test="#{not gatekeeperStatusBean.isLogged(item)}">
<strong>LOGGED OUT</strong>
</c:if>
</h:column>
</h:dataTable>
在第三列"Status"我想打印出看门人是否在数据库中登录。所有其他带有 #{item.id} 的列 ID 和带有 #{item.name} 的名称正在打印有效的非空值。当我想使用 #{gatekeeperStatusBean.isLogged(item)} 方法填充状态时,它显然将 NULL 项目值传递给 Java 方法。有人可以解释为什么会这样吗?
请参考答案 and for the question c:when and c:if don't work。
您可以使用替代方案
<h:column rendered="#{gatekeeperStatusBean.isLogged(item)}">
<f:facet name="header">LOGGED</f:facet>
<h:column rendered="#{not gatekeeperStatusBean.isLogged(item)}">
<f:facet name="header">LOGGED OUT</f:facet>
或者bean中有一个方法
public void getStatus(Item item)
{
return isLogged(item) ? "LOGGED" : "LOGGED OUT" ;
}
和其他领域一样直接使用
<h:column><f:facet name="header">Name</f:facet>
#{gatekeeperStatusBean.status}
</h:column>