@ManagedProperty - 设置getter和setter
据this article,我实现了@ManagedProperty(value="#{settings}")
到我的支持bean:@ManagedProperty - 设置getter和setter
BEAN Bde.java:
@Entity @Table(name="bdeDATA")
@ViewScoped
@ManagedBean(name="BDE")
public class Bde implements Serializable
{
/**/
private static final long serialVersionUID = -705775502999920673L;
@Transient
@ManagedProperty(value = "#{settings}")
private Settings settings;
@Id
private Date create_date;
private Integer person_ID;
public Date getCreate_date() {
return create_date;
}
public void setCreate_date(Date create_date) {
this.create_date = create_date;
}
public Integer getPerson_ID() {
return person_ID;
}
public void setPerson_ID(Integer person_ID) {
this.person_ID = person_ID;
try
{
Settings.PWKITEM = (Pwk)Tools.find(person_ID);
if (Settings.PWKITEM != null) settings.setUserfound(true); /// PROBLEMATIC
}
catch (Exception e)
{
Tools.setErrorMessage("NOT FOUND "+e.getMessage());
}
}
// ManagedProperty settings ---------------------------------------------
public Settings getSettings() {
return settings;
}
public void setSettings(Settings settings) {
this.settings = settings;
}
public void setUserfound (boolean userfound){
settings.setUserfound(userfound);
}
public boolean isUserfound() {
return settings.isUserfound();
}
}
Settings.java:
@SessionScoped @ManagedBean(name="settings")
public class Settings implements Serializable
{
/**/
private static final long serialVersionUID = 8613411699115714416L;
public static Pwk PWKITEM = new Pwk();
private boolean userfound = false;
public boolean isUserfound() {
return userfound;
}
public void setUserfound(boolean userfound) {
this.userfound = userfound;
}
}
XHTML(AJAX调用setPerson_ID):
<h:inputText id="persId" value="#{bean.bdeitem.persId}"> <f:ajax event="blur" render="name" execute="@this" />
</h:inputText>
<h:inputText id="name" value="#{bean.pwkitem.name}"/>
问题是在try/catch
:
- 没有条件,找到对象。
- 当我将条件例如更改为
if (Settings.PWKITEM != null) System.out.println("HELLO")
时,HELLO
被写入控制台。 - 如果我尝试添加
userfound
setter,它会被捕获(“未找到”)。
我在做什么错了?
回答:
你的问题看起来非常混乱。你首先展示一些bean代码,然后在甚至提到任何问题之前立即说出“我认为这是一个Ajax问题”。问题的其余部分没有多大区别。
直接回答你的问题的最后一部分,但:
Ican't理解,为什么它找到项目写入正确的名称来安慰,之后immediatelly的是,它写入找不到捕获异常???? ....
您正在访问静态的Settings
。你在课堂上宣布的实例似乎没用。如果Tools.find
引发异常并因此没有分配新值,则完全可能在静态Settings.PWKITEM
字段中仍存在旧值。这并不奇怪。
请注意日志从上到下读取。因此,不是打印“***”,然后抛出异常,但首先抛出异常并打印“未找到”,然后仅打印“***”。
此外,你的方法对所有这些看起来有问题。声明一个实体也是一个(JSF)的支持bean很少是一个好主意。在一个实体中使用对某种服务或DAO类的引用也并不总是一个好主意,但是在一个被认为是一个简单的ID设置器的方法中这样做看起来是错误的。
然后使用静态引用更加错误,如果关闭,则使用方法和非静态变量名称中的下划线违背常见的Java代码惯例。
以上是 @ManagedProperty - 设置getter和setter 的全部内容, 来源链接: utcz.com/qa/263602.html