【问题标题】:Recieving 'null' values from a jsp page into Struts 2 Action从jsp页面接收'null'值到Struts 2 Action
【发布时间】:2011-08-07 15:05:37
【问题描述】:

我有一个 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

可能是什么问题?我错过了什么吗?

【问题讨论】:

    标签: java struts2


    【解决方案1】:
    <a href='<s:url action="searchUserAdmin"/>' 
    title="Search"    id="button" class="btn" >
    

    它只是动作 URL 的一个 href,没有参数。因此,action 中的 'userName' 为 null。

    【讨论】:

    • 您好,谢谢。在我的场景中,我希望在提交 jsp 时使用 struts2 本身填充类中的 userName。我们怎样才能做到这一点? .我已经编辑了我的帖子以包含
      标记和 struts.xml 的一部分。
    • @vinoth:尝试在表单中使用 而不是
    • 是的。我试过了。有用 。问题是我们想要按钮的外观和感觉。所以我想,我必须使用 javascript 来提交表单。对吗?
    • @vinoth:检查文档即可。也许这可以工作。
    【解决方案2】:
    <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。它们必须相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2013-06-11
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      相关资源
      最近更新 更多