ssh后端的非string类型的对象,想在前端通过string类型显示的解决办法

解决办法在后端的实体类中增加一个这个属性的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>


猜你喜欢

转载自blog.csdn.net/Topdandan/article/details/80108167