好的,我在這裏失去了主意。這應該是微不足道的東西,但我一整天都陷在這個問題上。這是設置:Struts2不會將請求參數映射到Integer操作字段
形式的jsp:
<s:form action="update-po-numbers" method="GET">
<h3>PO numbers</h3>
<s:hidden name="programId"/>
USD: <s:textfield name="poNumUSD.paramValue" />
EUR: <s:textfield name="poNumEUR.paramValue" />
<s:submit value="Update PO numbers" />
</s:form>
struts.xml中:(默認支柱攔截器堆棧時)
<action name="update-po-numbers" class="UpdatePONumbersAction">
<result name="success">success.jsp</result>
</action>
UpdatePONumbersAction.java:
public class UpdatePONumbersAction extends BaseAction {
private Integer programId;
private InvoiceParameterVO poNumUSD;
private InvoiceParameterVO poNumEUR;
@Override
public String execute() throws Exception {
InvoiceManager.updatePoNums(programId, poNumUSD, poNumEUR);
return Action.SUCCESS;
}
public Integer getProgramId() {
return programId;
}
public void setProgramId (Integer programId) {
this.programId = programId;
}
public InvoiceParameterVO getPoNumUSD() {
return poNumUSD;
}
public void setPoNumUSD (InvoiceParameterVO poNumUSD) {
this.poNumUSD = poNumUSD;
}
public InvoiceParameterVO getPoNumEUR() {
return poNumEUR;
}
public void setPoNumEUR (InvoiceParameterVO poNumEUR) {
this.poNumEUR = poNumEUR;
}
}
表單之前已經填充了值。我可以從Chrome開發工具中看到,所有請求參數都按預期發送並且不爲空。在動作內部,poNumUSD.paramValue和poNumEUR.paramValue(它們是字符串)被設置得很好。但是,programId被設置爲null。我可以programId
「手動」獲得與字符串:
ServletActionContext.getRequest().getParam(paramName)
)
但我想自動類型轉換。我錯過了什麼?至少,如何調試這個來追蹤問題的任何幫助都會很好。
建議:啓用支柱包調試日誌記錄。做一個簡單的表格,你只保留與問題有關的信息,即一個只有programId –
的表單找到了嗎?有什麼問題? –
Nope :(我太激烈了,我不得不在週末給它一個休息時間,我明天再給它一個答案 – stojke