Возможно, вы уже решили это, но для тех, кто ищет ответ, да, это возможно.
Для сопоставления с подстановочными знаками см. http://struts.apache.org/2.3.1.2/docs/wildcard-mappings.html
Чтобы прочитать параметры из URL, аннотируйте ваш метод следующим образом:
private String id;
@Action(value = "edit/{id}",
results={@Result(name = "success", location = "/WEB-INF/views/devices/edit.ftl")}
)
public String edit() {
// do something
return SUCCESS;
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
- Вам понадобится метод получения / установки для параметра id.
- Вам необходимо указать результаты, так как struts2 не будет знать, что использовать для успеха для URL: ... edit / 123, поэтому необходимо использовать @Result для указания на ваш файл. В некотором роде здесь определена цель плагина конвенции.
Если я хочу перенаправить на определенный URL, используйте эту аннотацию:
@Action(value = "index",
results={@Result(name = "success", location = "/devices/edit/${entityId}", type = "redirect")}
)
Вам понадобится метод получения / установки для entityId (в моем случае - String).
Вы также можете использовать расширенное сопоставление wilcard, сопоставление подстановочных знаков пространства имен ...
Не забудьте изменить struts.xml и добавить следующие константы.
<!-- Used for advanced wilcard mapping -->
<constant name="struts.enable.SlashesInActionNames" value="true"/>
<constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
<constant name="struts.patternMatcher" value="regex" />