У меня очень простой компонент JSF, как показано ниже:
import org.jboss.seam.annotations.Name;
@Name(Sample.NAME)
public class Sample {
public static final String NAME="df";
private String text = "text-test";
public void sampleM(){
System.out.println("Test: "+text);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
И форма JSF, связанная с этим компонентом:
<h:form id="sampleForm">
<h:commandButton id="sampleButton" action="#{df.sampleM()}" value="ok" />
</h:form>
Теперь я хотел бы программно отправить запрос POST в эту форму.
Согласно моему исследованию, ключевыми здесь являются параметры POST. Правильный выбор дает правильные результаты (строка «Test: text-test» печатается на консоли сервера).
Возникает вопрос: Как выбрать правильные данные POST?
Показанная выше форма JSF создает эту HTML-форму:
<form id="sampleForm" name="sampleForm" method="post" action="/pages/main/main.smnet" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="sampleForm" value="sampleForm" />
<input id="sampleForm:sampleButton" type="submit" name="sampleForm:sampleButton" value="ok" />
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id65" autocomplete="off" />
</form>
Значит, эти параметры совпадают.
Но как узнать, каких параметров (имени и значения) будет достаточно для любого другого компонента?
Например: когда я отправляю данные POST так же, как в показанной HTML-форме, но с другим значением параметра javax.faces.ViewState, метод компонента не будет выполнен.