初学小白问个Struts2的标签问题
想用Struts2标签实现一个网站的首页,现在不知道怎么把值传到JSP页面上去。
Action代码,很简单的功能,加载页面时把值传过去
private User user;
private Map<Object,Object> map=new HashMap<Object, Object>();
public String toLogin() throws
IOException {
user.setName("admin");
user.setPassword("123456");
map.put("test", "aaa");
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@JSON(name="map")
public Map<Object, Object> getMap() {
return map;
}
public void setMap(Map<Object, Object> map) {
this.map = map;
}
Struts-config.xml配置
<action name="toLogin" class="com.test.login.action.LoginAction" method="toLogin">
<result name="success">/WEB-INF/jsp/login/login.jsp</result>
<result type="json"/>
</action>
JSP页面
<table>
<tbody>
<tr>
<td>
<s:property value="#map['test']"/>
<s:property value="user.name"/>
</td></tr>
</tbody>
</table>
第一次执行,提示
空指针异常
我把所有和user有关的都注掉
再次执行,得到的是这样的结果
{"map":{"test":"aaa"},"user":null}
请问下
空指针是错在哪里了?
而第二次执行时,为什么得到的不是aaa,而是这么复杂的数据
------解决方案--------------------1、user对象没有初始化。 new User(); 再set属性
2、你的struts.xml里配置的返回格式是json,所以你得到的是json格式的数据:
<result type="json"/>
------解决方案--------------------1.你报空指针的原因是你的user是null,你调用user.setName("admin");这一句的时候就已经报空指针了,因为你并没有一个user对象,你声明的全局变量user只是一个用于接收前台数据的对象的引用,并没有实例化。
2.因为你定义了
@JSON(name="map"),所以你map中的数据就以JSON的格式返回。
改正:1.把private User user;改成-->private User user=
new User();就不会报错了。
2.把@JSON(name="map")注解去掉数据格式就正常了。