在struts2中实现了编辑功能。 单击提交按钮后,可以在操作类中正确获取我在JSP中显示的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设置为隐藏,那么我可以在操作中获得createdBy的价值。 它的值已经由操作类设置。 然后,为什么还要在jsp页面中设置?

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

#1楼 票数:1 已采纳

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

另一种选择是将数据存储在Session中或获取您的操作类中的值,但是除非我们没有其他选择,否则它们不是首选的解决方案。

  ask by Abinaya translate from so

未解决问题?本站智能推荐:

2回复

Struts 2.0向Bean对象请求getparameter值

我有一个jsp页面,具有以下员工详细信息的形式。 AddEmp.jsp 提交表格后,我得到了控制器中的值 Struts 2.0会自动设置值(定义为Public)并可以访问它。 我的问题是-!! 我有一个员工的DAO,具有以下所有详细信息。 从JSP提交HTM
2回复

使用bean对象Struts中的值填充下拉列表

我有一个Struts2应用程序,我正在使用下拉列表。 我使用user bean中的userId和userName填充此下拉列表,如下所示 Users bean如下面给出的那样 Users.java 我在JSP中使用Struts2标记lib编写了一个代码来迭代List,以便
2回复

我收到了跨站点脚本:Struts 调用 bean 类时验证不佳

我在 HP Fortify 中扫描了我的应用程序并遇到了一个问题Cross-Site Scripting: Poor Validation 。 我正在使用 ESAPI 库。 我在 Struts 应用程序上得到了这个发现。 <%@ taglib prefix="s" uri="/struts-t
7回复

为什么我在Struts 2应用程序中没有定义要采取行动的结果

目前,我是Struts 2的新手,但是我有知识,但是当我尝试在Struts中执行验证时,我在自己的Struts 2示例中遇到了问题,这是一个自定义验证示例。 所有代码如下: 的index.jsp 的welcome.jsp RegisterAction.java 在
1回复

Struts 2 + Java Bean不保留值

我有个问题... 首先, 我是Struts 2和Java的新手 ,但是在工作中需要学习它。 我试图获取我的LoginUser 操作类以将信息传递给UserBean Java Bean ... 当LoginUser Action执行时,将通过标记从userBean调用fullName
1回复

将表单值存储在操作类的Bean中

假设我们有一个这样的JSP: 还有一个这样的动作类: 这工作正常,我在提交表单时从jsp获取操作字段中的值。 我要做的是制作另一个bean类,将字段放在该bean类中,将bean类声明为action class的属性,然后填充其字段。 这样的事情。 而且UserDTO
1回复

Struts2 - 根据bean值包含一个jsp

我需要在Struts2上进行一种页面切换。 像(在index.jsp上) if myBean.String="main" include main.jsp else include welcome.jsp 我尝试使用<s:if>或<c:choose>但看起来他
2回复

OGNL/Struts2 JSP 将 bean 分配给对象

在 Struts2 / OGNL 页面中,是否可以根据条件将任何类型的 bean 分配给对象? 例如,