2014-02-14 104 views
3

好的,我在這裏失去了主意。這應該是微不足道的東西,但我一整天都陷在這個問題上。這是設置: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)

但我想自動類型轉換。我錯過了什麼?至少,如何調試這個來追蹤問題的任何幫助都會很好。

+1

建議:啓用支柱包調試日誌記錄。做一個簡單的表格,你只保留與問題有關的信息,即一個只有programId –

+0

的表單找到了嗎?有什麼問題? –

+0

Nope :(我太激烈了,我不得不在週末給它一個休息時間,我明天再給它一個答案 – stojke

回答

2

你沒有爲調試設置的programId值在form.jsp

<s:hidden name="programId" value="1" /> 

OR

<s:hidden name="programId" value="%{programId}" /> 

OR

<input type="hidden" id="programId" name="programId" value="<%=request.getParameter("programId")%>" /> 
+0

您的'

相關問題