Можно ли сделать что-то подобное?
<s:form action="formAction1" namespace="/form1">
<s:form action="formAction2" namespace="/form2">
<s:textfield name="user"/>
<s:password name="pwd" />
<s:submit name="sub1" value="start1">
<s:submit name="sub2" value="start2">
</s:form>
</s:form>
т.е. если я start1
кнопку start1
, тогда будет отправлен formAction1
. еще когда start2
нажата, то formAction2
будет представлен. На самом деле я хочу иметь 2 разных действия на 2 разных кнопках в одной форме.
Я не хочу использовать тэг URL <!-- s:url -->
.
Нет, это невозможно в HTML, ни в Struts2. У вас не должно быть вложенных форм, но вы можете использовать несколько форм на странице.
<s:form>
<s:textfield name="user"/>
<s:password name="pwd" />
<s:submit name="sub1" value="start1" action="formAction1">
<s:submit name="sub2" value="start2" action="formAction2">
</s:form>
Также см. Как выровнять две кнопки отправки? , Там также информация о том, как настроить Struts2 на использование префикса действий.
Это невозможно, как вы показали в своем коде; но у вас может быть одна форма с несколькими кнопками, и каждое действие может выполняться по-разному.
вы можете достичь этого, используя следующий код
<s:form method="post" action="mySubmitAction">
// your form fields
<s:submit value="Submit"/>
<s:submit value="Clear" action="myClearAction"/>
</form>
Здесь, если вы нажмете на первую кнопку, mySubmitAction
.
Если вы нажмете на вторую кнопку myClearAction
, myClearAction
(поскольку мы myClearAction
атрибут action
во второй кнопке, вместо действия myClearAction
будет mySubmitAction
действие myClearAction
).
Вы можете получить доступ ко всему полю формы в обоих действиях.
Надеюсь, что это поможет вам.