2012-09-17 32 views
0

在struts2中实现了编辑功能。当我点击提交按钮后,我在JSP中显示的bean值在操作类中正确获取。为什么没有得到一些bean对象的值?

但是我在JSP中没有提到的其他bean的值是返回null。

如果我在JSP中显示bean的所有值,那么我可以在Action中获取所有值。

这是解决此问题的方法。否则,还有其他方法。

的Action类的代码

UserForm userForm = new UserForm(); 

public String edit(){ 
    String result = ActionSupport.ERROR; 
    HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); 
     HttpSession session = request.getSession(false); 
     if (null != session 
       && null != (UserAccount) session.getAttribute(USER)) { 
      String editUser = (String) request 
      .getParameter(RequestAttributes.EDIT_USER); 
      UserAccount userAccount = userForm.getUserAccount(); 
     if (null != editUser) { 
        //invoked when edit user page is submitted 
      userUtils.updateUserAccount(userAccount); 

     } else { 
        // invoked when edit user page gets loaded 
      String userAccSID = (String) request 
        .getParameter(USER_ACC_SID); 
      String roleSID = (String) request.getParameter(ROLE_SID); 
      if (null != userAccSID && null != roleSID) { 
       Long userAccSIDVal = Long.valueOf(userAccSID); 
       Long roleSIDVal = Long.valueOf(roleSID); 
       userAccount = userUtils 
         .loadUserAccount(userAccSIDVal); 
       userForm.setUserAccount(userAccount); 
      } 
     } 
    } 

    return result; 
} 

public UserForm getUserForm() { 
    return userForm; 
} 

public void setUserForm(UserForm userForm) { 
    this.userForm = userForm; 
} 

而对于JSP页面的代码是

<s:form action="edit?editUser=edit"> 
<table align="center"> 
        <s:hidden name="userForm.userAccount.createdBy"/> 
     <tr align="center"> 
      <th>Edit User</th> 
     </tr> 
     <tr> 
      <td><s:textfield name="userForm.userAccount.firstName" label="First Name"/></td> 
     </tr> 
     <tr> 
      <td><s:textfield name="userForm.userAccount.lastName" label="Last Name"/></td> 
     </tr> 

     <tr> 
      <td><s:submit value="Save" /><s:reset value="Cancel" /></td> 
     </tr> 
</table> 

现在,如果我把createdBy为隐藏,然后我可以得到的价值在行动中创建。 它的价值已经由行动类设置。 那么,为什么我应该在jsp页面中设置呢?

任何帮助将不胜感激。谢谢

+0

没有特定的代码/错误消息/堆栈跟踪/值,几乎不可能建议你。 – beny23

回答

1

如果您没有从JSP返回值,那么它们如何在表单提交时可用于Action类。 一个解决方案是创建隐藏字段并设置您不想在JSP页面上向用户显示的值,这样,当您点击提交按钮时,这些值将被提交到操作中。

其他选项是将数据存储在会话中或者获取操作类中的值,但它们不是首选解决方案,除非我们没有其他选项。

+0

谢谢Umesh。正如你所说我尝试过,它给了我价值观。但是我在struts1.2中完成了同样的任务而没有使用隐藏值,并且我在表单提交后获得了Action类中的所有值。 – Abinaya

+0

@Abinaya:我对Struts1不是很确定,但是概念和架构不同,因为有不同的形式Bean,而S2不是这种情况。 –

+0

是的..我要使用隐藏的价值 – Abinaya

相关问题