Html 有条件地呈现a中的行<;h:数据表>;
我正在尝试更改一个现有的数据表(由以前的开发人员编写),以便您在以sysadmin身份登录时可以看到整个表,但在以其他人身份登录时只能看到您自己的详细信息 我尝试通过向表中的每个值添加Html 有条件地呈现a中的行<;h:数据表>;,html,jsp,jsf,jsp-tags,Html,Jsp,Jsf,Jsp Tags,我正在尝试更改一个现有的数据表(由以前的开发人员编写),以便您在以sysadmin身份登录时可以看到整个表,但在以其他人身份登录时只能看到您自己的详细信息 我尝试通过向表中的每个值添加rendered标记来实现这一点。这让我看到,我的检查工作,并得到基本的测试工作。代码的该部分按预期运行。但是,有一个明显的缺陷,即无论是否填充,都会生成额外的行 这是我的密码: <h:dataTable value="#{userBean.users}" var="userAccount"
rendered
标记来实现这一点。这让我看到,我的检查工作,并得到基本的测试工作。代码的该部分按预期运行。但是,有一个明显的缺陷,即无论是否填充,都会生成额外的行
这是我的密码:
<h:dataTable value="#{userBean.users}" var="userAccount"
binding="#{userBean.userTable}"
styleClass="defaultTable"
headerClass="tableHeader"
rowClasses="evenRow,oddRow"
columnClasses="col512">
<h:column>
<f:facet name="header">
<h:outputText value="Username"/>
</f:facet>
<h:commandLink value="#{userAccount.userName}"
action="#{userBean.edit}"
rendered="#{(userAccount.userName == settings.user.userName)
|| settings.user.systemAdministrator}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="User Group"/>
</f:facet>
<h:outputText id="userGroup" value="#{userAccount.userGroup.userGroupName}"
rendered="#{(userAccount.userName == settings.user.userName)
|| settings.user.systemAdministrator}"/>
</h:column>
</h:dataTable>
当不是systemAdministrator时,它(可预测地)输出如下内容:
生成所有行,但仅为当前用户填写
我理解它为什么这样做,但我不知道如何让它做我想让它做的事情。这就像我想渲染
/not渲染
整行一样,但是数据表是由column not row生成的,所以我看不出如何添加它。即使添加一个
,我也需要在行的周围添加它,所以当它由列生成时,我不知道如何才能做到这一点
我的另一个想法是,我可以检查行是否为空,如果是,则隐藏它?但我觉得有点脏
这些选项中哪一个最好?在没有行
标记的情况下,如何绕过检查/隐藏行?还是我需要重组整个桌子?(可能超出我的能力。)
编辑: @xild建议的showClass/hideClass
rowClasses
如下所示:
i、 e.相同,但行与行之间没有分隔符。如果您不想看到对象,请不要将其放入收藏中
List<Users> usersAllowed= new ArrayList<Users>();
for (Users user : allUsers) {
if(condition){
usersAllowed.add(user);
}
}
在支持bean中提供瞬态属性是一种选项吗?我想在
userBean
中创建一个userVisibleAccounts
字段,该字段只保存当前用户可以访问的信息。
按列呈现(因此,适用于所有行),而不是按行呈现。不过,第一个和第三个建议是可以的。同意
一个建议。我猜您建议的最后一个是替换现有的行类
?我试过了,它产生了相同的输出,但行之间没有行(将编辑问题以包含另一个屏幕截图)。在问号之前是否有不必要的结束括号?还是应该在开放支架之前有一个开放支架?
<h:column rendered="#{(userAccount.userName == settings.user.userName)
|| settings.user.systemAdministrator}">
</h:column>
rowClasses="#{((userAccount.userName == settings.user.userName)
|| settings.user.systemAdministrator)) ? 'showClass' : 'hideClass'}"