【问题标题】:In Struts2 I am not getting form value on success.jsp page在 Struts2 中,我没有在 success.jsp 页面上获得表单值
【发布时间】:2013-02-23 08:39:48
【问题描述】:

在我的应用程序中,我试图通过将用户的详细信息添加到数据库中来注册用户,并在成功后完全插入这些值。我需要显示表单输入页面,但在结果页面上我没有得到任何输出。

我的动作类是

package action;


import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

import dao.Empdao;
import model.Empmodel;
public class Empaction extends ActionSupport implements ModelDriven<Object>{
private static final long serialVersionUID = 1L;
Empmodel modelobj;

    public Empmodel getModelobj() {
    return modelobj;
}

public void setModelobj(Empmodel modelobj) {
    this.modelobj = modelobj;
}
    public String execute() throws Exception{
        Empdao empdao = new Empdao();
        int queryResult = empdao.registration(modelobj);


        if (queryResult==0)
        {   
          addActionError("it is a dublicate entry please enter anothe id");
         return ERROR;
        }   
        else{

         return SUCCESS;    
            }

}


    @Override
    public Object getModel() {
        modelobj = new Empmodel();
        return null;
    }

}

Success.jsp 是

<body>


  first name : <s:property value="modelobj.firstname"/> <br>
last name :<s:property value="modelobj.lastname" />
<s:property value="modelobj.id" />
<s:property value="modelobj.gender" />
<s:property value="modelobj.dob" />
<s:property value="modelobj.maritalstatus" />
<s:property value="modelobj.email" />
<s:property value="modelobj.joiningdate" />
<s:property value="modelobj.designation" />
<s:property value="modelobj.country" />
<s:property value="modelobj.state" />
<s:property value="modelobj.city" />
<s:property value="modelobj.pincode" />
<s:property value="modelobj.mobileno" />
<s:property value="modelobj.groups" />

</body>
</html>

Empmodel 类是

package model;

public class Empmodel {
private String firstname;
private String lastname;                        
private String id;
private String gender;
private String dob;
private String maritalstatus;
private String email;
private String joiningdate;
private String designation;
private String address;
private String country;
private String state;
private String city;
private int  pincode;
private long mobileno;
private String groups;
public String getFirstname() {
    return firstname;
}
public void setFirstname(String firstname) {
    this.firstname = firstname;
}
public String getLastname() {
    return lastname;
}
public void setLastname(String lastname) {
    this.lastname = lastname;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getGender() {
    return gender;
}
public void setGender(String gender) {
    this.gender = gender;
}
public String getDob() {
    return dob;
}
public void setDob(String dob) {
    this.dob = dob;
}
public String getMaritalstatus() {
    return maritalstatus;
}
public void setMaritalstatus(String maritalstatus) {
    this.maritalstatus = maritalstatus;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}
public String getJoiningdate() {
    return joiningdate;
}
public void setJoiningdate(String joiningdate) {
    this.joiningdate = joiningdate;
}
public String getDesignation() {
    return designation;
}
public void setDesignation(String designation) {
    this.designation = designation;
}
public String getAddress() {
    return address;
}
public void setAddress(String address) {
    this.address = address;
}
public String getCountry() {
    return country;
}
public void setCountry(String country) {
    this.country = country;
}
public String getState() {
    return state;
}
public void setState(String state) {
    this.state = state;
}
public String getCity() {
    return city;
}
public void setCity(String city) {
    this.city = city;
}


public long getMobileno() {
    return mobileno;
}
public void setMobileno(long mobileno) {
    this.mobileno = mobileno;
}
public String getGroups() {
    return groups;
}
public void setGroups(String groups) {
    this.groups = groups;
}
public int getPincode() {
    return pincode;
}
public void setPincode(int pincode) {
    this.pincode = pincode;
}

}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
   "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
   "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
           <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
           <constant name="struts.devmode" value="true"/>
          <package name="loginmodel" extends ="struts-default">


           <action name ="emplogin" class ="action.Empaction">

          <result name= "wait">/Registration/wait.jsp</result>
          <result name = "input">/Registration/empregistration.jsp</result>
           <result name ="success" type="redirect" >/Registration/success.jsp</result>
         <result name="error">/Registration/empregistration.jsp</result>                   
        </action>


          </package>

empregistration.jsp

<%@ page language ="java" contentType ="text/html; charset=ISO-8859-1" pageEncoding ="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%@ taglib uri="/struts-dojo-tags" prefix="sx" %> 
 <html>
    <head>
       <sx:head/>
    <script type="text/javascript"  src ="script.js"></script>

    </head>  

      <body>
        <div align="center"> <h1 style="color: red">  ENPLOYEE REGISTRATION FORM</h1>
        <s:form  action="emplogin"  method="post">

      <s:textfield name="modelobj.firstname" label="Employee Firstname"/>
      <s:textfield name ="modelobj.lastname" label ="Last name"/>  
      <s:textfield name ="modelobj.id"  label="Id"/>
      <s:radio name ="modelobj.gender"   list="{'male', 'female'}" label = "Gender"/>
    <sx:datetimepicker name="dob" displayFormat="dd-MMM-yyyy"  label="DOB"></sx:datetimepicker> 
      <s:radio  name ="modelobj.maritalstatus" list="{'singale','married'}" label="Marital Status" />

      <s:textfield name ="modelobj.email" label ="Email"/>
 <sx:datetimepicker name ="modelobj.joiningdate" displayFormat="dd-MMM-yyyy" label="Joining Date"></sx:datetimepicker>

      <s:textfield name= "modelobj.designation" label = "Designation"/>
      <s:textarea name ="modelobj.address" label ="Address" />
      <s:textfield name = "modelobj.country" label ="Country" />     
      <s:textfield name  ="modelobj.state" label = "State" />
      <s:textfield name  ="modelobj.city" label ="City"/> 
      <s:textfield name ="modelobj.pincode" label ="Pincode"/>
      <s:textfield name ="modelobj.mobileno" label="Mobile No"/>
      <s:select   name ="modelobj.groups" list="{'group 1', 'group 2', 'group 3'}"  label ="Group"  cssStyle="{width:184px"/>
     <tr><td>&nbsp;</td></tr>
        <tr>
    <td>&nbsp;</td>
      <s:submit align="center"></s:submit>
      </s:form>
       </div>
    </body>
 </html>

【问题讨论】:

  • 你能把Empmodel的代码贴出来吗?
  • 同时发布struts.xml

标签: java jsp struts2 ognl model-driven


【解决方案1】:

您正在重定向错误的成功页面,因为您丢失了显示结果所需的值。使用

<result name ="success">/Registration/success.jsp</result>

或者干脆

<result>/Registration/success.jsp</result>

顺便说一句,您只有 firstnamelastname 的 getter 和 setter,因此只会显示这些属性。如果要显示其他属性,则应在字段中添加相应的方法。

您可以阅读servlet API javadoc 以了解可能导致结果type="redirect" 的线索。

要进一步比较转发和重定向结果之间的差异,请考虑this thread

【讨论】:

  • 即使我没有在 success.jsp 中获得 firname 和 lastname
  • 删除配置中的type="redirect"
  • 谢谢。现在它正在工作。你能告诉我们重定向导致的问题是什么吗?
  • 欢迎来到 SO,如果你认为这个答案是正确的,那么你应该接受它。
  • @Arvind 它不起作用的问题是,当您发送重定向时,存储在请求范围内的所有对象都将被自动刷新,因此会创建一个新请求。
【解决方案2】:

如果 type=redirectAction 则必须提及 Action 名称,不带任何扩展名 如果它只是重​​定向,那么您必须提及包括操作名称和扩展名,对于您的问题,这是因为发生了重定向问题。

即使在重定向到某个页面之后,当您返回结果页面时,如果您想保留数据,那么最好将其放入会话中。

【讨论】:

    【解决方案3】:

    不要重定向你的页面删除它并使用

    <result name ="success">/Registration/success.jsp</result> in you struts.xml file
    

    【讨论】:

      猜你喜欢
      • 2013-02-09
      • 1970-01-01
      • 2016-08-29
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多