我想知道如何传递方法的名称来执行一个动作,这是我在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 谢谢:)
答案 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";
}
}
你可以尝试这个,我希望它可以帮助你。