gpt4 book ai didi

java - jsf 将一个 bean 生成的字符串传递给另一个 bean 中的字符串

转载 作者:行者123 更新时间:2023-12-01 13:27:08 25 4
gpt4 key购买 nike

在我的 jsf 2.0 代码中,当您完成表单时,它会考虑您在一个表单中指定的所有“错误”值,并在按下命令按钮时将其添加到字符串缓冲区,然后将其转换为字符串。现在我想要的是让这个字符串作为值转到下一个 bean,以便下一个 jsf 页面上的文本区域输入已经添加了该信息。但遗憾的是,我对如何实现这一目标一片空白。这是我到目前为止所写的内容。我没有从页面或 bean 中收到任何类型的错误,只是没有显示任何帮助,我们将不胜感激,非常喜欢。

public String fillForm(){

boolean failTest = false;
String errorCodeForNcpForm = "";
StringBuffer buffer = new StringBuffer();

buffer.append (" ");

if (!unitSerialValue.equalsIgnoreCase("P"))
{

buffer.append (1 + unitSerialValue );
failTest = true;
buffer.append(" ");
}

if(!screenProValue.equalsIgnoreCase("P"))
{

buffer.append (2 + unitSerialValue );
failTest = true;
buffer.append(" ");
}

if(failTest)
{
//gets the whole error code
errorCodeForNcpForm = buffer.toString();

NcpFormBean ncpForm = new NcpFormBean();

//Sets the error code to the value
ncpForm.setproblemQcValue(errorCodeForNcpForm);

return "ncpFormQc";
}

else
return "index";
}

这里是包含该值的代码的 xhtml 部分。

 <b>Problem Description: </b>  
<h:inputTextarea value="#{ncpFormBean.problemQcValue}" id="problemDec" required="true" cols="30" rows="10">
<f:validateLength minimum="1" maximum="30" />
</h:inputTextarea> <br/>
<h:message for="problemDec" style="color:red" />


第二个 bean“ncpFormBean”当前除了标准 getter 和 setter 之外什么都没有,并且两个 bean 都是 session 范围。

最佳答案

在第一个 bean 中声明第二个 bean,如下所示:

// change the value as the name of your real managedbean name
@ManagedProperty(value="#{ncpFormBean}")
private NcpFormBean ncpForm;

及其设置者:

public void setNcpForm(NcpFormBean ncpForm) {
this.ncpForm = ncpForm;
}

现在在您的 fillForm 方法中:

public String fillForm(){
boolean failTest = false;
String errorCodeForNcpForm = "";
StringBuffer buffer = new StringBuffer();
buffer.append (" ");
if (!unitSerialValue.equalsIgnoreCase("P")){
buffer.append (1 + unitSerialValue );
failTest = true;
buffer.append(" ");
}

if(!screenProValue.equalsIgnoreCase("P")){
buffer.append (2 + unitSerialValue );
failTest = true;
buffer.append(" ");
}

if(failTest){
//gets the whole error code
errorCodeForNcpForm = buffer.toString();

this.ncpForm.setproblemQcValue(errorCodeForNcpForm);

return "ncpFormQc";
} else
return "index";
}

现在可以在第二个 View 的第二个 bean 中访问传递的数据(因为您的 bean 是 session 范围的)。

更新:

假设您有 2 个 bean:Bean1 和 Bean2(两者都是 sessionScoped):

如果你想改变值

@ManagedBean(name="bean1")
@SessionScoped
public class Bean1 {
@ManagedProperty(value="#{bean2}")
private Bean2 ncpForm;
....
}

..

@ManagedBean(name="bean2")
@SessionScoped
public class Bean2 {
....
....
}

注意:@ManagedProperty(value="#{bean2}") 此值/名称必须与此处的名称完全相同 @ManagedBean(name="bean2")

现在是 xhtml:

bean1.xhtml

....
<h:commandButton action="#{bean1.fillForm}"/>
....

关于java - jsf 将一个 bean 生成的字符串传递给另一个 bean 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757312/

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