【发布时间】:2011-03-24 07:08:33
【问题描述】:
struts2中action类的数据如何传递到jsp页面。 在将控制权转移到 jsp 页面之前,是否在动作类内部构建了任何类型的堆栈,或者使用了其他机制。
【问题讨论】:
struts2中action类的数据如何传递到jsp页面。 在将控制权转移到 jsp 页面之前,是否在动作类内部构建了任何类型的堆栈,或者使用了其他机制。
【问题讨论】:
安舒尔,
你的实现是正确的。对于 Struts2,我们可以通过以下方式看到它
值栈是 Struts2 框架中的一个虚拟栈,是框架放置所有与请求处理相关的数据的中心位置。在 Struts2 中,Actions 也被视为数据载体,所以当action 完成了它的工作,它被放置在值堆栈的顶部。
让我们在行动中有这样的东西
public class MyAction extends ActionSupport{
private String firstname;
private String lastname;
public void setFirstName(firstname){
this.firstname=firstname
}
public void setLastName(lastname){
this.lastname=lastname
}
public String getFirstName(){
return firstname;
}
public String geLastName(){
return lastname;
}
public String execute() throws Exception{
//action logic filling first name and last name from database etc.
return SUCCESS;
}
}
现在当动作返回后,逻辑框架会将动作实例放在值堆栈的顶部,firstname 和 lastname 将在它的顶部。
so now when we try to access these values in jsp something like
<s:textfield name="firstname" value= "%{firstname}"/>
这里(%{firstname}) OGNL 将到位,它会尝试查看值堆栈中是否有名称为firstname 的属性,因为操作位于值堆栈的顶部并且它的属性名称为firstname OGNL 会在其中找到它。
希望对你有帮助
【讨论】: