gpt4 book ai didi

java - 使用 JSF 添加动态内容

转载 作者:行者123 更新时间:2023-12-02 07:39:22 25 4
gpt4 key购买 nike

嗨, friend 们,我是 JSF 新手,我陷入了 JSF 问题。我想在我的 JSF 页面中动态添加我的内容。我的要求是我有一个 Facelets,我必须在某个事件之后将其添加到我的页面中。

我的页面包含

两个字段“用户名”和“答案”

两个按钮“登录”和“恢复密码”

Facelet 包含

一个字段和一个按钮

现在我希望当我运行此页面时它应该只显示页面内容(如上所述)
如果用户按下按钮'恢复密码',那么它应该在同一页面的页面组件下显示facelet,这意味着按下按钮后,页面可以包含facelet。
但是现在,当我运行代码时,它会同时显示,因为我没有添加任何逻辑来动态添加第二个facelet。
这里给出了下面给出的代码补丁

 <h:inputText id="txtLogin" styleClass="textEntry" required="true" requiredMessage="Username is required."> 
</h:inputText>
<h:inputText id="answer" styleClass="textEntry" autocomplete="off" required="true" requiredMessage="Answer is required."></h:inputText>
<h:commandButton id="btnSave" value="Save" styleClass="formbutton" onclick="btnSave_Click" />
<h:commandButton id="btnRecover" value="Recover" styleClass="formbutton" onclick="btnRecover_Click"/>

现在我想当这个btnRecover_click点击时它包含这个facelet或运行这个代码

<div class="divPadding">
<ui:include id="passrecov" src="ucPasswordRecovery.xhtml" rendered="false"/>
</div>

请记住,我必须使用 JSF 执行此操作,并且不想使用 JavaScript 执行此操作
谢谢

最佳答案

我将发布一个使用 1 列的示例,请记住您可以使用另一个 ui 容器。

<h:form>
<h:panelGrid id="login">
<h:panelGrid>
<h:inputText id="txtLogin" styleClass="textEntry" required="true"
requiredMessage="Username is required.">
</h:inputText>
<h:inputText id="answer" styleClass="textEntry" autocomplete="off"
required="true" requiredMessage="Answer is required.">
</h:inputText>
<h:commandButton id="btnSave" value="Save" styleClass="formbutton"
onclick="btnSave_Click" />
<h:commandButton id="btnRecover" value="Recover" styleClass="formbutton"
action="#{loginBean.showPassRecovery}" />
</h:panelGrid>
</h:panelGrid>

<h:panelGrid id="passRecovery">
<h:panelGrid rendered="#{not loginBean.loginEnabled}">
<ui:include id="passrecov" src="ucPasswordRecovery.xhtml" />
</h:panelGrid>
</h:panelGrid>
</h:form>

以及您的托管 bean:

@ManagedBean
@ViewScoped
public class LoginBean {
private boolean loginEnabled;

public LoginBean() {
loginEnabled = true;
}

//getters and setters...

//this method will return void, so the page will be refreshed with the new
//loginEnabled value. this time the components inside "login" panelGrid won't be rendered
//but "passRecovery" panelGrid components will.
public void showPassRecovery() {
loginEnabled = false;
}
}

关于java - 使用 JSF 添加动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789845/

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