当前位置: 首页 > 面试题库 >

struts2将U​​RL传递给Action

松正阳
2023-03-14
问题内容

我阅读了有关通配符映射的struts手册,并决定亲自测试一些示例。我有一个动作指向:

<action name="**" method="getPerson" class="PersonActionBean">
      <result>/person/view.jsp</result>
</action>

这使我可以走过去的任何地方,/person并尽view.jsp我所能查看。因此,我现在想去的是,/person/jack/black然后我要让类中的getPerson方法PersonActionBean获取URL字段jackblack并按名称和姓氏在数据库中进行搜索,然后填充将在view.jsp

我关心的不是搜索功能,而是从方法中检索URL中的字段getPerson。如何从URL中检索jackblackgetPerson方法中使用它?

我正在使用 Struts 2.1.8.1


问题答案:

方法1-使用struts2-convention插件

struts.xml

<constant name="struts.patternMatcher" value="namedVariable"/>

PersonAction.java

    import org.apache.struts2.convention.annotation.Namespace;
    ...
    @Namespace{"/persons/{param1}/{param2}");
    public class PersonActionBean exends ActionSupport {
        private String param1;
        private String param2;
        // getter and setter
    }

如果你打电话persons/jack/black时,PARAMS应设置为param1 = jackparam2 = black

方法2-没有struts2-convention插件

PersonAction.java

public class PersonActionBean exends ActionSupport {
    private String param1;
    private String param2;
    // getter and setter
}

person.xml

<package name="person" namespace="/person" extends="website">
    <action name="*/*" method="getPerson" class="PersonActionBean">
            <param name="param1">{1}</param>
            <param name="param2">{2}</param>
            <result>/person/view.jsp</result>
    </action>   
</package>

struts.xml

<package name="website" namespace="/" extends="struts-default, json-default">
     ...
    <constant name="struts.enable.SlashesInActionNames" value="true"/>
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
     ...
</package>

参考文献

查看高级通配符



 类似资料:
  • 问题内容: 我打算将JSON格式的整个表单数据发布到Struts2 Action。以下是我的代码段。纠正我要去哪里的错误或帮助我,以便我可以正确获取Action文件中的所有值。我在操作文件中的所有SOP显示为 我的表格数据变成了 Struts2操作文件: 现在的输出 问题答案: 由于我使用名称,值,所以必须使用名称来获取它。下面是工作代码

  • 问题内容: 这是我的问题: 当我用JavaScript编写此代码时 // 好: 但是,当我尝试在属性标签中动态设置该值时,没有任何执行。 // 不好: 有人可以帮我吗? 问题答案: Struts标签,例如JSTL,EL等,是在服务器端执行的。执行完所有这些步骤后,仅HTML的最终页面将呈现给客户端。只有这样,JavaScript才能在页面上运行。 您不能混合使用javascript和Struts标

  • 问题内容: 这是我的问题: 当我用JavaScript编写此代码时 // 好: 但是,当我尝试在属性标签中动态设置该值时,没有任何执行。 // 不好: 有人可以帮我吗? 问题答案: Struts标签,例如JSTL,EL等,是在服务器端执行的。执行完所有这些步骤后,仅HTML的最终页面将呈现给客户端。只有这样,JavaScript才能在页面上运行。 您不能混合使用javascript和Struts标

  • 问题内容: 我试图将SharedPreferences首选项作为AsyncTask中doInBackground函数的参数传递。我已经给它传递了一个字符串(URL),所以我也需要将首选项也作为字符串传递。我可以简单地使用prefs.toString()将其转换为字符串吗? 这是我设置偏好的地方: 问题答案: 你不能,你不应该。您可以轻松地读取内部首选项,而无需将任何内容传递给方法,只需使用即可:

  • 问题内容: 我正在寻找一种将变量或字符串或任何东西传递给JButton的匿名actionlistener(或显式actionlistener)的方法。这是我所拥有的: 现在,我只是声明是一个全局变量,但是我讨厌这种工作方式。有更好的选择吗? 问题答案: 创建一个实现该接口的类。 提供具有参数的构造函数。 问题?

  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对