Creating dynamic URL with 2 action parameters in Struts 2 using OGNL [duplicate]

只愿长相守 提交于 2019-11-28 00:35:24
Andrea Ligios

You need Advanced Wildcard Mappings.

From the documentation: Struts2's Advanced Wildcard Mappings:

Advanced Wildcards

From 2.1.9+ regular expressions can be defined defined in the action name. To use this form of wild card, the following constants must be set:

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

The regular expressions can be in two forms, the simplest one is {FIELD_NAME}, in which case the field with the FIELD_NAME in the action will be populated with the matched text, for example:

<package name="books" extends="struts-default" namespace="/">
    <action name="/{type}/content/{title}" class="example.BookAction">
        <result>/books/content.jsp</result>
    </action> 
</package>

In this example, if the url /fiction/content/Frankenstein is requested, BookAction's field "type" will be set to "fiction", and the field "title" will be set to "Frankenstein".

If using Struts2-Convention-Plugin, your example would be:

@Action(value="/books/{author}/{year}")
public class Books extends ActionSupport {
    private String  author; 
    private Integer year;
    /* ...GETTERS AND SETTERS HERE... */

    public String execute(){            
        /* ...LOAD DATA HERE... */
        if (noDataFound)
            return NONE;
        return SUCCESS
    }
}

If you need to work with those parameters in prepare() method, read this question.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!