【发布时间】:2015-07-08 13:38:02
【问题描述】:
值没有从方法一传递到方法二显示空指针异常请帮帮我。
在Struts2 action 类中包含两个方法。一种方法产生一个值,该值被另一种方法使用。在 jsp 页面中,我有两个按钮。调用第一个方法来填充值。另一个按钮调用同一类中的第二个方法,并使用第一个方法中先前填充的值并在 jsp 中显示值。但是每个按钮单击动作类对象本身都会被破坏并为每个按钮单击创建新对象。所以第一种方法的值会丢失,不能被第二种方法引用。请告诉我解决方案。
Struts2 动作类:
public class CrudAction{
private List<String> list;
public List<String> getList() {
return list;
}
//method one
public String one(){
list=new ArrayList<String>();
list.add("one");
list.add("two");
return "success";
}
//method two
public String two(){
list.add("three");
return "success";
}
}
struts.xml:
<action name="one" class="com.CrudAction" method="one">
<result name="success">/index.jsp</result>
</action>
// for second method
<action name="two" class="com.CrudAction" method="two">
<result name="success">/index.jsp</result>
</action>
在jsp中:
第一种方法
<input type = "button" value = "one" onclick = "javascript:location.href='one.action';"/>
第二种方法
<input type = "button" value = "two" onclick"javascript:location.href='two.action';"/>
【问题讨论】:
-
不要多次发布同一个问题。将您的列表存储在某处(例如会话)。
-
是的,我也想过.. 但是有没有其他方法可以做到这一点...比如重新渲染一些特定的列表或变量... struts 2 是否有可能有一些方法。 . 我很高兴听到 .. 如果有什么存在
-
您的问题与手头的框架无关。您需要将列表存储在某处或从 jsp 发布。
-
当然有。但其他所有方式都更糟。将其保存在数据库或文件上然后读取它,或通过请求发布整个列表,将其注入页面,将其发布回来(但它可能被黑客入侵),或使用 localHistory,或 sessionHistory,或 cookie 等...只需使用会话。
-
感谢@AndreaLigios 的回复。现在我认为使用 session 对我的要求来说是个好主意。