我有一个jsp页面和struts 2 Action类。当我在jsp中提交表单时,我会在操作中获得空值。
JSP代码如下所示:
<s:form id="user" name="user" action="initUserAdmin">
<s:textfield name="userName" cssClass="txtbox" size="30" />
<div class="btn"><a href='<s:url action="searchUserAdmin"/>'
title="Search" id="button" class="btn" ><span>Search</span></a></div>
</s:form>
struts.xml有这个部分
<action name="*UserAdmin" method="{1}" class="com.mphasis.im.web.action.UserAction">
<result name="init" type="tiles">user</result>
<result name="search" type="tiles">user</result>
<result name="reset" type="tiles">user</result>
<result name="createNew" type="tiles">createNewUser</result>
</action>
Action类有这个:
public class UserAction extends BaseAction
{
public String userName;
public String getUserName()
{
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String search()
{
searchProcessed = true;
System.out.println("******** inside search ******");
System.out.println("username = "+ userName);
return TilesConstants.SEARCH;
}
当我在jsp页面的文本框中键入一个字符串时,输出如下所示。
******** inside search ******
username = null
可能是什么问题?我错过了什么吗?
答案 0 :(得分:3)
<a href='<s:url action="searchUserAdmin"/>'
title="Search" id="button" class="btn" >
它只是动作网址的一个href,没有参数。因此,操作中的“userName”为空。
答案 1 :(得分:0)
<s:form id="user" name="user" action="initUserAdmin">
<s:textfield name="userName" cssClass="txtbox" size="30" />
<div class="btn"><a href='javascript:submitme()'
title="Search" id="button" class="btn" ><span>Search</span></a></div>
</s:form>
的Javascript
function submitme(){
document.user.submit()
}
此外,在动作映射中,您提供的动作名称为UserAdmin
,而在您使用initUserAdmin
的表单操作中。它们必须相同