我需要在搜索结果中仅显示<ui:repeat>
中的选定行。这是我的代码:
<h:inputText value="#{user.lname}" required="false" class="defaultText1 c_8" title="Search by user"></h:inputText>
<h:commandButton id="submit" name="submit" action="#{user.retrieveMembersByName}" />
<ui:repeat id="dtable" var="u" value="#{user.getUserList()}" varStatus="status" rendered="#{not empty user.dataList}">
<li>
<a href="#">#{u.memberId}</a>
<a href="#" >#{u.groupId}</a>
<a href="#">#{u.fname}</a>
<a href="#">#{u.mname}</a>
</li>
</ui:repeat>
现在它显示所有行。如果我放<ui:repeat value="#{user.dataList}">
,它将只显示搜索到的单行。但是,我想显示所有行,只有当我搜索时它才会显示单行。或者我可以突出显示搜索到的行吗?
答案 0 :(得分:0)
检查某些条件并显示带有附加类的元素以“突出显示”结果。如果需要,也可以更改其他元素的类,即隐藏它们。
观点:
<h:form>
<h:inputText value="#{userBean.userName}" required="true" />
<h:commandButton value="Search" action="#{userBean.search}" />
<ui:fragment rendered="#{not empty userBean.userList}">
<ul>
<ui:repeat value="#{userBean.userList}" var="user">
<li class="#{fn:contains(user.name, userBean.userName) ? 'highlight' : 'grayed'}"><a href="#">#{user.name}</a></li>
</ui:repeat>
</ul>
</ui:fragment>
</h:form>
这可以通过带参数的EL 2.2方法调用来完成,而不是使用JSTL function。
豆子:
@ManagedBean
@ViewScoped
public class UserBean implements Serializable {
private List<User> userList;//getter
private String userName;//getter+setter
public String search() {
//load data and handle exceptions, if needed, do business job
userList = userDAO.find(userName);
}
}