解决办法:在后端的实体类中增加一个这个属性的get方法,这个方法比原get方法后多一个后缀,比如s,其返回值类型为String,然后用struts2标签在前端获取这个属性值的时候也在后面加一个相同的后缀。
举一反三:这个解决办法可以运用到任何想要在前端表达的类型,比如date类型,如果实体中的类型是date类型,直接在前端获得的话有可能是乱码有可能显示的不是自己想要的,就可以通过这个办法将date类型转换成你想要的string类型,然后再增加一个get方法,在前端用struts标签获得即可,注意:前端标签获得的时候加上与你后端相同的后缀。
演示如下:需求是我想在前端获得一个联系人实体中的性别,但是这个性别是非string的,看我如何修改它。
1、在原来LinkMan实体中增加一个public String getLkm_gender_s(){}方法,在这个方法中书写你想要的逻辑,这个方法的原get方法是:public Character getLkm_gender() {return lkm_gender;}。
修改后的LinkMan实体类的完整代码如下:
package indi.domain;
//联系人实体
public class LinkMan {
private Long lkm_id;//联系人id
private Character lkm_gender;//联系人性别
private String lkm_name;//联系人姓名
//下面配置get和set方法
public Long getLkm_id() {
return lkm_id;
}
public void setLkm_id(Long lkm_id) {
this.lkm_id = lkm_id;
}
public Character getLkm_gender() {
return lkm_gender;
}
//这是原lkm_gender的get方法
public void setLkm_gender(Character lkm_gender) {
this.lkm_gender = lkm_gender;
}
//这是为了在前端获得这个性别显示的更好的方法,在原来get方法后加了一个"_s",可指定
//其struts2标签获取的方法为:<s:property value="#linkMan.lkm_gender_s" />,linkMan为传入前端的实体
public String getLkm_gender_s() {
if(lkm_gender==null){
return "";
}
switch (lkm_gender) {
case '1':
return "男";
case '2':
return "女";
default:
return "";
}
}
public String getLkm_name() {
return lkm_name;
}
public void setLkm_name(String lkm_name) {
this.lkm_name = lkm_name;
}
}
2、前端通过struts2标签获得转换后的性别
<TD><s:property value="#linkMan.lkm_name" /></TD>
<!--不是用下面这个方法获得性别了-->
<TD><s:property value="#linkMan.lkm_gender" /></TD>
<!--而是用下面这个方法获得性别!!!!!!-->
<TD><s:property value="#linkMan.lkm_gender_s" /></TD>