2013-01-19 3 views
2

나는 host/ActionName?parm1=123&parm2=abc과 같은 쿼리 문자열을 전달하는 대신 host/ActionName/123/abc/과 같은 URL을 사용하는 것을 좋아합니다.Struts 2에서 쿼리 문자열없이 URL에 매개 변수를 전달

Struts2에서 어떻게 할 수 있습니까?

아래와 같이했습니다. 하지만 작동하지 않습니다. 500 오류 코드 표시

<constant name="struts.enable.SlashesInActionNames" value="true"/> 
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/> 

<package name="default" extends="struts-default" namespace="/"> 
     <action name="/action/*" 
    class="gov.apiic.serviceRequest.action.ServiceRequest" method="method" > 
    <param name="p1">{1}</param> 
    <result name="success">views.jsp</result> 
    </action> 
</package> 
+1

해당 SEO 친화적 URL 및 http://stackoverflow.com/a/5443736/1085285 또는 http://stackoverflow.com/a/5762548/1085285 –

+0

에서 답변을 찾을 수 있습니다. 답변 해 주셔서 대단히 감사합니다. 나는 노력했지만 운이 없었다. – Sagar

답변

2

일반 Struts2에서는 2.1 이상에서는 불가능했습니다. 이 문제를 해결하려면 UrlRewriter filter을 사용하십시오. 와일드 카드를 사용하여 Struts2 2.1 이상에서 host/ActionNmae/param1-123/param2-abc과 같은 것을 사용할 수 있습니다. this을 참조하십시오. 그러나 host/ActionNmae/123/abc/은 아닙니다. 차이점은 두 번째 경우에는 매개 변수 이름이 없다는 것입니다. 해결 방법은 Parameters after the action name입니다.

@Action(value = "/ActionNmae/*/*", params = {"param1", "{1}", "param2", "{2}"} 
+1

예, 패턴 매처 매퍼 (패턴 매처 매퍼)로 할 수 있습니다. –

1

당신은 namedVariable 또는 regex 패턴 매처 (matcher)를 사용할 수 있습니다.

각각에는 고유 한 장점과 단점이 있으며, 그 중 대부분을 해결할 수 있습니다.

관련 문제