gpt4 book ai didi

jsf - 无法检索 inside my managed bean's action method 的值

转载 作者:行者123 更新时间:2023-12-04 03:09:28 25 4
gpt4 key购买 nike

JSF 查看代码:

<f:view>
<h:form>
<h:panelGrid>
<h:inputText id="key" value="#{myManagedBean.key}"/>
<h:selectBooleanCheckbox id="rerun" value="#{myManagedBean.rerun}" rendered="#{myManagedBean.displayRerun}"/>
<h:commandButton id="check" action="#{myManagedBean.check}"/>
</h:panelGrid>
</h:form>
<f:view>

JSF型号代码:
public class MyManagedBean {

private boolean displayRerun;


public void setDisplayRerun(boolean aDisplayRerun) {
this.displayRerun = aDisplayRerun }

public boolean getDisplayRerun() {
return this.displayRerun;
}

private String key;


public void setKey(String aKey) {
this.key = aKey
}

public String getKey() {
return this.key;
}
private boolean rerun;


public void setRerun(boolean arerun) {
this.rerun = arerun
}

public boolean getRerun() {
return this.rerun;
}

public String check() {
//do data validation
setDisplayRerun(true);
System.out.println(getRerun());
}

}

这总是打印 false不管复选框是否被选中。

Additional Information on my requirement:



Nick/BalusC,我的托管 bean 属于请求范围。这确实是我提供的简化代码片段。我的页面有几个用户输入控件以及一个命令按钮。在提交命令按钮时,我调用支持 bean 的操作方法,在其中我进行数据验证(在这种情况下,我查找数据库并查看输入是否已经注册。)如果已经注册,我回到同一页面,这个当我显示 singleBooleanCheckBox 供用户选择并再次点击命令按钮时。
我正在根据 managedbean 属性(在数据验证期间设置的 bool 标志)切换复选框的显示。

当我重新提交选中复选框的页面时,我没有收到此数据。

为了进一步验证,我将 selectBooleanCheckbox 替换为具有类似行为的命令按钮(基本上最初不呈现它,而仅在数据验证时显示它)。我将它的@action 映射到我的 managedbean 的 action 方法。令我惊讶的是,当我点击按钮时,操作方法没有执行。相反,页面会像“立即”场景或重定向一样刷新。

我已经为此苦苦挣扎了将近 6 个小时。感谢您经验丰富的见解。

谢谢。

最佳答案

所以,你实际上有一个 rendered复选框上的属性(在您的初始问题中不存在)并且 bean 是请求范围的(当它是 session 范围时它会起作用)。当此属性评估 false 时,将不会在应用请求值阶段收集提交的复选框值在那时候。

您基本上还需要在后续请求中保留负责呈现属性的条件。这可以通过多种方式完成:将 bean 放入 session 范围,使用 Tomahawk 的 t:saveStateh:inputHidden一颗 bean binding . this answer 中详细概述了每一项。 .

关于jsf - 无法检索 <h :selectBooleanCheckbox> inside my managed bean's action method 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4100024/

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