Struts2中OGNL语句访问普通属性无法取值
打算用Struts2实现一个读取数据并显示的小项目
Model:
Student类
package OGNL;
public class Student {
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String say() {
return "调用方法成功";
}
}
Action类:
package OGNL;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class OGNLAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Student stu;
private String name;
Map<String,Object> request;
@SuppressWarnings("unchecked")
public OGNLAction() {
stu = new Student();
stu.setName("富贵");
stu.setId(1);
name = "Tom";
request = (Map<String, Object>) ActionContext.getContext().get("request");
}
public String execute() throws Exception{
request.put("info","request测试");
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student getStudent() {
return this.stu;
}
public void setStudent(Student stu) {
this.stu = stu;
}
}
View:
ognl_index.jsp
<body>
<a href="ognl.action">OGNL测试</a>
</body>
ognl_success.jsp:
<body>
<div>
<h1>操作普通属性</h1>
属性name值:<s:property value="name"/>
<br><hr>
学号:<s:property value="stu.id"/><br>
//**问题就出在这里,stu是我创建好了的引用,却无法显示在JSP页面上**
姓名:<s:property value="student.name"/><br>
say()方法:<s:property value="student.say()"/> //**而student这个引用名我从未创建过,却可以取值并显示在JSP页面上**
<br><hr>
request中的info值:<s:property value="#request.info"/>
</div>
</body>
Controller
struts.xml
<constant name="strut.devMode" value="true"></constant>
<package name="myPackage" extends="struts-default" >
<!-- 定义action -->
<action name="ognl" class="OGNL.OGNLAction">
<result name="success">ognl_success.jsp</result>
</action>
</package>
运行结果
用student引用去访问的属性成功显示在了页面上,而我自己创建的stu引用却无法读取数据
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论