我有一個條紋操作頁面。和頁面加載時,我想通過從一個對象(即setOriginalAssignee(userAction.getAssignee()))中分配它來保存原始的受權人,以便萬一如果對象的字段受讓人被更改,我將執行一些計算。這是我行動的bean:隱藏的字段在綁定條帶時變爲null actionbean
視圖-details.jsp頁面@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);
}
}
部分看起來像這樣
<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方法時,它說原始的Assignee爲null。我不應該找出原因。我應該對Forward或Redirect解決方案做出改變嗎?
參考:userAction是一個hibernate持久對象。 謝謝。
您是否已驗證隱藏字段是否在表單中正確設置?要麼查看源代碼或將其更改爲文本字段? – clmarquart 2012-04-04 13:11:45
這就是當我看到源文件時我有的 然而,當我將「value =」$ {actionBean.originalAssignee}「」添加到隱藏的變量..它工作得很好。我不知道爲什麼原始代碼不起作用,但至少現在它解決了這個問題。 – WowBow 2012-04-04 16:41:43