将其绑定到条纹ActionBean中时,隐藏字段变为空 [英] Hidden field becomes null when binding it in stripes actionbean

查看:103
本文介绍了将其绑定到条纹ActionBean中时,隐藏字段变为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个条纹操作页面。当页面加载时,我想通过从对象(即setOriginalAssignee(userAction.getAssignee()))进行分配来保存originalAssignee,以便在对象的字段分配者被更改的情况下进行一些计算。这是我的动作bean:

I have a stripes action page. and When the page loads, I want to save an originalAssignee by assigning it from an object (i.e setOriginalAssignee (userAction.getAssignee())) so that in case if the object's field assignee is changed i will do some computing. Here is my action bean:

@UrlBinding("/action/view-details.page")
public class ActionListViewPage extends CustomAction {
.
.
.
private static final String ACTION_LIST_VIEW = "/action/view-details.jsp";
private static final String ACTION_HOME_PAGE="/action/dashboard.page";
private SecurityPerson originalAssignee;
private UserAction userAction;

    public UserAction getUserAction() {
        return userAction;
    }

    public void setUserAction(UserAction userAction) {
        this.userAction = userAction;
    }

    public SecurityPerson getOriginalAssignee() {
        return originalAssignee;
    }

    public void setOriginalAssignee(SecurityPerson originalAssignee) {
        this.originalAssignee = originalAssignee;
    }

@DefaultHandler
    public Resolution showUserAction() {


        if(userAction==null){
            flash("error", "Can't find the the specified User action." );
           return new RedirectResolution(ACTION_HOME_PAGE);
        }

        setOriginalAssignee(userAction.getAssignee());// This one works fine and assigns the the assignee to originalAssignee for future reference 
        return new ForwardResolution(ACTION_LIST_VIEW);
    }
 public Resolution saveUserAction() {

        try {

            if(!originalAssignee.equals(userAction.getAssignee())){
                userAction.setStatusEnum(StatusEnum.RE_ASSIGNED);
                userAction.setAssignedBy(getCurrentUser(getRequest()));
                userAction.setAssignedTimestamp(new Date());
            }

            if (userAction.getStatusEnum() == null) {
                userAction.setStatusEnum(FinAidActionStatusEnum.UNASSIGNED);
            }


            userAction.save();
            flash("ok", "User Action change has been saved to the database. ");

        }
        catch (Exception e) {

            flash("error", "Error saving UserAction./n " + e.getMessage());
        }
        return new RedirectResolution(ACTION_HOME_PAGE);
    }


}

部分view-details.jsp页面如下:

part of the view-details.jsp page looks like this

<stripes:form beanclass="${actionBean.class}" name="actionListForm" id="actionListForm" method="POST"
                              action="view-details.page?saveUserAction=1"
                              style="padding-left:20px;">
                   **<stripes:hidden name="originalAssignee"/>**

                    <tr>
                        <td align="left"> Assign to:</td>

                        <td align="right">
                            <stripes:select name="userAction.assignee" value="${actionBean.userAction.assignee}"
                                            onchange="$('actionListForm').submit();">
                                <stripes:option value=""> </stripes:option>
                                <stripes:options-collection collection="${actionBean.assigneeList}"
                                                            label="person.name"/>
                            </stripes:select>
                        </td>
                        </br> </br>
                    </tr>
                    <tr>
                        <td>
                            Status:
                        </td>
                        <td>
                            <stripes:select name="userAction.statusEnum" onchange="$('actionListForm').submit();"
                                            value="${actionBean.userAction.statusEnum}">
                                <stripes:option value=""> </stripes:option>
                                <stripes:options-enumeration enum="uiowa.maui.biz.finaid.enums.FinAidActionStatusEnum"/>
                            </stripes:select>
                        </td>

                    </tr>

                    <stripes:hidden name="userAction"/>


                </stripes:form>

从我的代码可以看到,我使用了隐藏变量来保留originalAssignee ...但是当saveUserAction时方法被调用,它表示originalAssignee为null。我不知道原因。我应该对转发或重定向分辨率进行更改吗?

As you can see from my code i used hidden variable to keep originalAssignee ... but when the saveUserAction method is called, it says the originalAssignee is null. I shouldn't figure out the reason. Is there a change i should make on the Forward or Redirect resolution?

仅供参考:userAction是休眠的持久对象。
谢谢。

FYI: userAction is a hibernate persistent object. Thank you.

推荐答案

当我看到源代码时,这就是我所拥有的

This is what I have when i see the source

<input type="hidden" value="" name="originalAssignee">

但是,当我添加 value = $ {actionBean.originalAssignee} 到隐藏的var ..,它工作正常。我不知道为什么原始代码无法正常运行,但至少目前为止,它可以解决问题。

However, when I add " value="${actionBean.originalAssignee}" " to the hidden var .. and it worked fine. I don't know why the original code is not working but, for now at least it solved the problem.

仅供参考:如果您可以提供原因,说明上一个不起作用,并且您的解决方案比我的要好,我将为您提供解决方案。因此,请随时添加您的答案。

FYI: If you can provide why the previous one is not working and your solution is better than mine, I will make your's the solution. So, feel free to add your answer.

这篇关于将其绑定到条纹ActionBean中时,隐藏字段变为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆