Как передать параметр из JSP в действие Struts 2 - PullRequest
0 голосов
/ 07 января 2012

У меня есть приложение, и я хочу передавать элемент id в действие каждый раз, когда нажимается кнопка для этого элемента.

Мой JSP:

<s:submit  value="addToCart" action="addToCart" type="submit">
<s:param name="id" value="%{#cpu.id}" />
</s:submit>

Действие:

public class ProductsCPU extends BaseAction implements Preparable, SessionAware {
private static final long serialVersionUID = 2124421844550008773L;

private List colors = new ArrayList<>();
private List cpus;
private String id;

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

Когда я печатаю идентификатор на консоль, он имеет значение null.В чем проблема?

Ответы [ 3 ]

0 голосов
/ 11 августа 2014

Вам необходимо использовать элемент формы.

<form action="passId>
    <s:hidden name="id" value="%{#cpu.id}" />
    <s:submit  value="addToCart" action="addToCart" type="submit"/>
</form>
0 голосов
/ 18 декабря 2016

Проблема в том, что вы не можете параметризовать тег s:submit с тегом s:param, как в вашем коде, используя тег param в теле тега submit.

Вы также не хотите добавлять поле hidden, потому что вы получили несколько значений, представленных в действии. Это связано с тем, что многие скрытые поля отображаются с одним и тем же именем. Вы можете использовать только одно поле и обновить его значение перед отправкой формы.

Возможно, вы использовали неправильный тег для передачи параметра в действие. Вы можете использовать тег привязки и параметризовать его с тегом param.

Второй способ - использовать javascript для изменения атрибута action. Таким образом, вы также можете использовать тег button.

Третий способ не рекомендуется, поскольку он требует использования нескольких форм, по одной на каждую ссылку. Таким образом, вы напрямую добавляете параметр в атрибут действия формы.

Ниже приведен код для указанных выше вариантов.

3-в-1:

<s:form name="myForm13" namespace="/" action="save?message=Hello param 3" theme="simple">
  <br/><s:a cssClass="btn btn-primary" action="test"><s:param name="message">Hello param 1</s:param>&nbsp;&nbsp;&nbsp;Go&nbsp;&nbsp;&nbsp;</s:a>
  <br/><s:a href="#" cssClass="btn btn-warning" onclick="myForm13.action='test?message=Hello param 2';myForm13.submit()">Submit</s:a>
  <br/><s:submit cssClass="btn btn-danger" action="test"/>    
</s:form>

0 голосов
/ 07 января 2012

Это должно сделать:

<s:url id="myurl" action="addToCart">
    <s:param name="id" value="%{#cpu.id}" />
</s:url>
<s:submit  value="addToCart" action="%{myurl}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...