如何在url中传递方法的名称

时间:2015-05-09 15:11:18

标签: java-ee

我想知道如何传递方法的名称来执行一个动作,这是我在page.jsp中写的代码

         <s:url id="url" action="FormInt!nom_of_method" includeContext="false"/>
    <s:a href="%{url}"><s:text name="Accueil.FormInt"/></s:a>

我将执行操作中的方法(nom_of_method)(FormInt),但它使用以下链接生成错误

            http://localhost:7070/example/FormInt!nom_of_method.action

我想要的链接

  http://localhost:7070/example/FormInt.action

P.S:我使用Struts2 谢谢:)

2 个答案:

答案 0 :(得分:0)

您应该在<s:url/>中分离方法和操作。 您可以改为使用:

 <s:url var="url" action="FormInt" method="nom_of_method" includeContext="false"/>

由于不推荐使用ID,请使用上面的var

答案 1 :(得分:0)

您可以在同一个包中定义多个操作,其中每个操作可以使用具有不同方法调用的同一个类。

<package name="yourPackage" namespace="/myPackage" extends="struts-default">

    <action name="m1" class="com.stackoverflow.MyAction" method="methodOne">
        <result name="success">pages/action.jsp</result>
    </action>

    <action name="m2" class="com.stackoverflow.MyAction" method="methodTwo">
        <result name="success">pages/anotherPage.jsp</result>
    </action>

  </package>

现在您可以在视图中使用任何方法,如下所示:

<s:url var="urlMethod1" action="m1" namespace="/myPackage" />
<s:url var="urlMethod2" action="m2" namespace="/myPackage" />

<s:a href="%{urlMethod1}">My url method 1</s:a>
<s:a href="%{urlMethod2}">My url method 2</s:a>

根据你对这个包的配置,m1被映射到myPackage / m1,当你执行这个url时,你将调用你的动作类的方法MyAction.methodOne,并且对于m2将是相同的,只有点到MyAction.methodTwo。

您的操作类将如下所示:

package com.stackoverflow;

public class MyAction{
    public String methodOne(){
        //your code here
        return "success";
    }

    public String methodTwo(){
        //your code here
        return "success";
    }
}

你可以尝试这个,我希望它可以帮助你。