如何通过一个方法的名称在URL

问题描述:

我想知道如何传递方法的名称来执行的行动,这是我在写page.jsp如何通过一个方法的名称在URL

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

我将代码执行是在动作(FormInt)方法(nom_of_method),但它与下面的链接

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

我想有

http://localhost:7070/example/FormInt.action 
链接生成的错误3210

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

你应该分开方法和动作在<s:url/>。 你可以改用:

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

而且因为ID已被弃用,如上使用var

+0

它不起作用#Akash Rajbanshi –

+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根据你这个包的配置,当你执行这个网址,你将调用你的动作类的MyAction.methodOne方法,而m2将是相同的,只能指向MyAction.methodTwo。

Action类的意志是这样的:

package com.stackoverflow; 

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

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

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