[英]Struts2 won't map request param to Integer action field
好的,我在这里失去了理智。 这应该是微不足道的东西,但我整天都坚持这一点。 这是设置:
形成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 :(使用默认的struts拦截器堆栈)
<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
方式获得programId
“手动”作为String:
ServletActionContext.getRequest().getParam(paramName)
)
但我想要自动类型转换。 我错过了什么? 至少,如何调试这个以帮助追踪问题的任何帮助都会很棒。
您没有设置的值programId
在form.jsp
<s:hidden name="programId" value="1" />
要么
<s:hidden name="programId" value="%{programId}" />
要么
<input type="hidden" id="programId" name="programId" value="<%=request.getParameter("programId")%>" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.