论坛首页 Java企业应用论坛

如何给@Bean声明的bean赋属性值?

浏览 3640 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-01-26  

我现在写了一个自己的验证类

这里面有一个set方法(红色的代码),用来给该Validator赋属性值。

public class PatronCodeValidator implements Validator
{
  private KnowPatrons knowPatrons;
  public void setKnowPatrons(KnowPatrons knowPatrons)
  {
   this.knowPatrons=knowPatrons;
  
  }
 PatronCodeValidator()
  {}
public void validate(IFormComponent field,
  ValidationMessages messages,
         Object object) throws ValidatorException
{
 String patronCode=(String)object;
 if(!knowPatrons.isKnow(patronCode))
 {
  throw new ValidatorException("patron not found",null);
 }

 }
.....................................................................

}

<bean class="com.ttdev.postage.PatronCodeValidator" name="patronCodeValidator"></bean><bean class="com.ttdev.postage.PatronCodeValidator" name="patronCodeValidator"></bean>我没有使用.page文件声明该类,而在在程序中利用annotations来定义。我在页面程序的构造函数中给自定义的validator赋属性值,(程序中红色的代码)我认为完全可以取代.page文件中利用set元素赋值,但程序总是报错。盼望高手解答!

 public abstract class Postage extends BasePage
{
private KnowPatrons knowPatrons;

public KnowPatrons getKonwPatrons();
@Bean
 public abstract ValidationDelegate getDelegate();
@Bean
public abstract PatronCodeValidator getPatronCodeValidator();
public abstract IFieldTracking getCurrentFieldTracking();
public Postage()
{
knowPatrons=new KnowPatrons();
getPatronCodeValidator().setKnowPatrons(knowPatrons);
}
public IPage onSubmit()
{

}
}

 

   发表时间:2007-01-26  
报什么错误,空指针?不要在构造函数里调用注释声明的变量,应该这时候还没有执行初始化方法,你implements PageBeginRenderListener,覆盖方法public void pageBeginRender(PageEvent event) {
knowPatrons=new KnowPatrons();
getPatronCodeValidator().setKnowPatrons(knowPatrons);
}
试一下
0 请登录后投票
   发表时间:2007-01-26  
谢谢,tapestry的解答,按照你的方法问题解决了。注释声明的bean变量应该是在一个request到来时才被创建,并随着一个request的结束而结束,对吧?
0 请登录后投票
   发表时间:2007-01-27  
Page Object 是有一个实例池的概念的,当从池中取出Page Object时,属性被初始化,当返回池时,属性被销毁,所以Page Object是线程安全的,但是在构造函数中,属性显然没有被初使化,估计@bean应该是在生成的PageObject子类中通过set注入的吧(猜测),刚刚学习tapestry.
0 请登录后投票
   发表时间:2007-01-31  
谢谢你的回复,希望共同进步。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics