EDIT
Кажется, что есть немного путаницы здесь, давайте попробуем сделать это ясно:
Есть три основных способа инициирования связи с сервером из браузера:
- отправить HTML
- представить JS
- AJAX представить
Вы могут или может не забота о предоставлении поддержки пользователей, просматривающих с JavaScript инвалидов;
- Если вам НЕ ПОЖАЛУЙСТА, то вы можете действовать по своему усмотрению;
- , если вы не все равно, то у вас есть два пути перед вами:
- делают уникальную версию страницы, которая работает как с и без JS (с помощью ТОЛЬКО вариант «1», «Submit HTML ");
- сделать страницы работающими двумя возможными способами, взаимоисключающими: при обработке страницы вы обнаружите, включен ли javascript: если да, вы отправляетесь с JS (submit или AJAX), если нет, вы отступаете к не- Решение JS («отправить HTML»).
Оба эти два решения работает и без JS, но последний, как правило, предпочтительнее, поскольку вы можете создать хороший, красивый, опыт ориентированных на пользователя WebApp для 99% пользователей, используя JavaScript и, в конечном итоге, AJAX, и создайте резервное решение для 1% пользователей, которое, даже если сайт не будет приятным, как в версии JS, и даже если у него не будет ВСЕ функции JS версии, он все равно будет использоваться, и основные функциональные возможности будут доступны.
Как я уже сказал в приведенном выше комментарии, нет необходимости, чтобы резервная версия WebApp была такой же приятной, такой же быстрой, как и у пользователей в качестве версии JS: она должна просто ... работать.
Например, этот JSP будет работать в обоих случаях: он будет выполнять JavaScript Submit после выбора элемента из параметра «Выбрать, если JS», и он будет делать передачу после нажатия кнопки «Отправить», если JS отключен.
С отключенным JS onchange будет проигнорирован и обработан <noscript>
.
С включенным JS, обмен будет обработан, а <noscript>
проигнорирован.
<s:form action="myAction">
<s:select onchange="javascript:document.forms[0].submit();"
name="test1" value="test1" list="{'A','B','C'}" />
<s:textfield name="test2" value="test2" />
<noscript>
<span>
Since you have JS disabled,
you need to manually press to the GO button,
but you still can make it work ;)
</span>
<s:submit value="go" />
</noscript>
</s:form>
в вашем действии
public class MyAction extends ActionSupport{
private String test1="";
private String test2;
/* Getters and Setters */
public String execute(){
if (test1.length()>0)
assignValues();
return SUCCESS;
}
private void assignValues(){
if (test1.equals("A")){
test2 = "A was chosen, do something";
} else if (test1.equals("B")){
test2 = "B was chosen, do something else";
} else if (test1.equals("C")){
test2 = "C was chosen, what's next?";
}
}
}
Другие сомнения вы выражающие в комментариях предполагают, что вы можете сделать шаг назад на мгновение и прочитать некоторые Struts2 учебник, чтобы быть уверенным в получении максимума от рамки.
Если у вас есть другие поля в той же Форме, на которые вы не хотите влиять, просто объявите переменную в действии (с помощью Getter и Setter) для каждого из них: они будут сохранены в перезагрузите страницу, потому что они будут отправлены (потому что они в форме) вместе с submit, они будут введены через Setter, они будут прочитаны через Getter и введены на новой странице путем сопоставления их имени и переменная действия.
В противном случае вы можете использовать AJAX, но я бы начал с этого.
И нет, вы не можете вложить формы.
почему у вас есть 2 'textfield' с тем же имя? – Jaiwo99
должен проверить test2 и test3 только показывая или может быть отредактирован? – Jaiwo99
* Без * JavaScript? Вы хотите динамически модифицировать что-то в DOM без JavaScript? Удачи. –