gpt4 book ai didi

java - 如何显示/隐藏 jsf 组件

转载 作者:太空狗 更新时间:2023-10-29 15:39:11 25 4
gpt4 key购买 nike

在我的一个 JSF 应用程序中,顶部的 header 部分包含 selectOneMenu,底部的内容部分显示过滤器组件。默认情况下,应用程序首先在顶部显示 selectOneMenu 数据,在底部显示相应的 Filter 信息。如果用户选择了不同的selectOneMenu数据,底部内容部分需要加载相应的Filter信息。

Filter组件有CommandButton,用户填写Filter信息。单击按钮并批准过滤器后,应用程序应加载另一个组件 - Report.xhtml 以代替过滤器组件。即 Filter 组件应由底部内容部分的 Report 替换。

点击 selectOneMenu 项目应该重复这个过程。即显示过滤屏幕等。

问题领域1.无法在内容部分显示过滤表单和隐藏报表2. Filter 的支持 bean - commandButton OK 应该返回值。根据结果​​,应显示报告而不是过滤器。

我不确定设计是否准确,如果不能按预期工作,请提出建议,我们将不胜感激。我想保持基于 ajax 的应用程序,我不想在按钮事件上重新加载整个页面。

GDK


<h:form id="form1">    
<h:selectOneMenu value="#{states.stateName}">
<f:selectItems value="#{states.stateChoices}"/>
<f:ajax render=":Filter"/>
</h:selectOneMenu>
</h:form>
<h:form id="Filter">
<div id="content">
<h:panelGroup id="one" rendered="Need a condition from form1 to display this">
#{states.stateName}
<br/>Report
<h:inputText id="report" value="#{Counties.report}" style="width:150px"/>
<h:commandButton id="OK" value="OK" actionListener="#{Counties.getReports}">
<f:param name="CatName" value="Dekalb" />
</h:commandButton>
</h:panelGroup>
</div>
</h:form>
<h:form id="Report">
<div id="content">
<h:panelGroup id="two" rendered="#{should be rendered on acceptance from OK command button}">
<ui:include src="Report.xhtml"/>
</h:panelGroup>
</div>
</h:form>

最佳答案

这是一个最小示例(我也很乐意清理命名以符合标准):

<h:form>
<h:selectOneMenu value="#{states.stateName}">
<f:selectItems value="#{states.stateChoices}" />
<f:ajax render=":filter" />
</h:selectOneMenu>
</h:form>
<h:panelGroup id="filter">
<h:panelGroup rendered="#{not empty states.stateName}">
<h:form rendered="#{not counties.accepted}">
<h:inputText value="#{counties.report}" />
<h:commandButton value="OK" action="#{counties.viewReport}">
<f:ajax execute="@form" render=":filter" />
</h:commandButton>
</h:form>
<h:form rendered="#{counties.accepted}">
<ui:include src="report.xhtml"/>
</h:form>
</h:panelGroup>
</h:panelGroup>

Counties 托管 bean 有一个新的 boolean 属性 accepted:

@ManagedBean
@ViewScoped
public class Counties {

private boolean accepted;

public void viewReport() {
if (some condition) {
accepted = true;
}
}

public boolean isAccepted() {
return accepted;
}

}

关于java - 如何显示/隐藏 jsf 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com