Forms Struts 1.3:提交后请求属性丢失

Forms Struts 1.3:提交后请求属性丢失,forms,validation,httprequest,struts-1,Forms,Validation,Httprequest,Struts 1,我有两个jsp页面,比如form.jsp和myForm.jsp 在第一个页面form.jsp中,有一个单选按钮组(表单名称为“form”) 当用户提交此表单时,将从数据库中检索一些信息,并使用这些信息构建myForm.jsp中的表单(表单名称为“myForm”) 问题是,当提交第二个表单时,只显示错误,而不显示根据db值创建的表单字段。 例如,我从数据库检索两个单选按钮(property=“prop”)的标签和值 在struts config.xml中,我有: <form-bean nam

我有两个jsp页面,比如
form.jsp
myForm.jsp

在第一个页面form.jsp中,有一个单选按钮组(表单名称为“form”)

当用户提交此表单时,将从数据库中检索一些信息,并使用这些信息构建myForm.jsp中的表单(表单名称为“myForm”)

问题是,当提交第二个表单时,只显示错误,而不显示根据db值创建的表单字段。 例如,我从数据库检索两个单选按钮(property=“prop”)的标签和值

struts config.xml
中,我有:

<form-bean name="myForm" type="org.apache.struts.validator.MyValidatorActionForm">
<form-property name="prop" type="java.lang.Integer"></form-property>
</form-bean>

<action path="/form" input="/jsp/home.jsp" name="form" scope="request" type="myPackage.LoadInfo">

<forward name="Success" path="/jsp/myForm.jsp"/>  
<forward name="Failure" path="/jsp/home.jsp" />     
</action>

 <action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="request" type="myPackage.MyValidatorAction"> 
<forward name="Success" path="/jsp/success.jsp"/>  
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>
validation.xml
中:

表单提交而不选择任何单选按钮后,将显示错误,但不显示单选按钮

如何维护所有请求属性? 我也尝试使用范围会话,但没有任何更改:

 <action path="/myForm" input="/jsp/myForm.jsp" name="myForm" validate="true" scope="session" type="myPackage.MyValidatorAction"> 
<forward name="Success" path="/jsp/success.jsp"/>  
<forward name="Failure" path="/jsp/failure.jsp"/>
</action>
在窗体显示之前调用的操作
LoadInfo

myForm.jsp
中,我使用:

 request.getSession().getAttribute("props");
相反,在struts-config.xml中,作用域仍然是请求

然而,这不是一个好的解决方案,因为不同的浏览器选项卡共享同一个会话


如何解决这个问题?

jsp页面中的表单字段应该在ActionForm类中具有相应的属性

因此,如果您的jsp有一个单选按钮

<html:radio name="myForm" property="name">

如果以这种方式设置,则当页面刷新时,用户输入的值仍应存在

jsp页面中的表单字段应该在ActionForm类中具有相应的属性

因此,如果您的jsp有一个单选按钮

<html:radio name="myForm" property="name">

如果以这种方式设置,则当页面刷新时,用户输入的值仍应存在

我有它,有私有的int属性,还有get和set方法。问题在于,当出现错误时(在本例中,选择了任何单选按钮),将显示错误,但不会显示单选按钮。只有标签和消息错误。我不确定这是不是一个好主意,或者它是否有效,但您是否尝试过将范围从请求更改为会话?我也这么认为,并且我已经尝试过将其更改为会话,但是它不起作用。试试这个:在action类中,当错误发生时,对单选按钮属性执行SysOut,看看输出了什么。这样,当错误发生时,您就可以知道对象是否仍然存在。如果我没有选择按钮,然后提交表单,则会通过xml进行验证(打印错误消息),但不会调用操作类MyValidatorAction的execute方法(我没有例外,没有任何内容)。相反,如果我选择一个单选按钮,然后提交调用execute方法的表单,那么在System.out上可以很好地打印radio属性的值,但是打印“props”对象会产生一个空指针异常(System.out.println(request.getAttribute(“props”).toString();)我有它,带有私有int属性,以及get和set方法。问题在于,当出现错误时(在本例中,选择了任何单选按钮),将显示错误,但不会显示单选按钮。只有标签和消息错误。我不确定这是不是一个好主意,或者它是否有效,但您是否尝试过将范围从请求更改为会话?我也这么认为,并且我已经尝试过将其更改为会话,但是它不起作用。试试这个:在action类中,当错误发生时,对单选按钮属性执行SysOut,看看输出了什么。这样,当错误发生时,您就可以知道对象是否仍然存在。如果我没有选择按钮,然后提交表单,则会通过xml进行验证(打印错误消息),但不会调用操作类MyValidatorAction的execute方法(我没有例外,没有任何内容)。相反,如果我选择一个单选按钮,然后提交调用execute方法的表单,则可以在System.out上很好地打印radio属性的值,但是打印“props”对象会产生一个空指针异常(System.out.println(request.getAttribute(“props”).toString();)
<html:radio name="myForm" property="name">
public class MyClass{
private String name; 
public String getName()
{ 
   return name; 
}
public void setName(String name){
   this.name = name; 
}