技术开发 频道

EasyJWeb vs Struts2



五、数据的处理
  两个框架都抛弃了Struts1.x中那种需要借助ActionFrom来处理数据的机制,而采用更为先进的注入方式。EasyJWeb中的WebForm中提供了一个toPo方法,用来处理数据注入。
  比如,为了在Action中注入Person对象:
  EasyJWeb的Action代码中直接使用toPo方法手动注入,如:

public class PersonAction extends AbstractPageCmdAction {
    
private
 PersonService service;
 
public void
 setService(PersonService service)
{
this.service=
service;
}

    
public void save(WebForm form) {
  Person person
=form.toPo(Person.class
);
        
this
.service.save(person);
  page(
"list"
);
    }

}

对应的表单是普通的html表示,如下所示:

<form action="save" validate="true">
       
<input type="text" id="id" name="id" cssStyle="display:none"/>
    
<input type="text" id="firstName" label="First Name" name="firstName"/>
    
<input type="text" id="lastName" label="Last Name" name="lastName"/>
    
</form>

Struts2中则不需要写代码,只需要把要注入的数据在Action中准备好即可,如:

public class PersonAction {
    
private
 PersonService service;
    
private
 Person person;

    
public PersonAction(PersonService service) 
{
        
this.service =
 service;
    }


    
public String execute() {
        
//this.persons = service.findAll();

        return Action.SUCCESS;
    }

    
public String save() {
        
this
.service.save(person);
        
this.person = new
 Person();
        
return
 execute();
    }

    
public Person getPerson() {
        
return
 person;
    }

    
public void setPerson(Person person) {
        
this.person =
 person;
    }

}


 

对应的表单如下所示:

<s:form action="save" validate="true">
       
<s:textfield id="id" name="person.id" cssStyle="display:none"/>
    
<s:textfield id="firstName" label="First Name" name="person.firstName"/>
    
<s:textfield id="lastName" label="Last Name" name="person.lastName"/>
    
</s:form>

当然,Struts2关于数据转换方面提供了很多可供选择,比如也可以实现ModelDriven接口提供getModel来按指定的规则注入模型数据。

  对于关联对像的加载及注入,比如Person中的Department属性,EasyJWeb只需要在属性上加上一个@POLoad标签即可,而struts2则不能。

六、其它
1、验证处理
  EasyJWeb提供了一个基于注解标签实现的灵活框架,可以直接在要验证的数据对象(一般是模型对象)中直接添加验证标签来实现验证,另外在Action中加入自定义的验证内容也非常容易,只需要使用addError方法即可。当前EasyJWeb-1.0m3只支持通过注解的方式验证。
  Struts2的验证框架结合了Strut1.x及webwork,可以直接使用验证标签来标注验证,也可以使用xml文件来配置验证规则及验证目标对象。
  EasyJWeb的验证标签:

@Validator(name=”string”,value=”blank;trim;required;min:5;max:10;minMsg:最少不能少于5个字符;maxMsg:最大不能超过10字符”)
更多参考:
http://www.easyjf.org/html/20070822/12867758-1954570.htm

Struts2的验证配置,

<field name="stringLengthValidatorField">
  
<field-validator type="stringlength">
   
<param name="maxLength">4</param>
   
<param name="minLength">2</param>
   
<param name="trim">true</param>
   
<message><![CDATA[ must be a String of a specific greater than 1 less than 5 if specified ]]></message>
  
</field-validator>
 
</field>
0
相关文章