ユーザーが ajax を使用して入力テキストに何かを入力すると、ラジオ ボタンの値が自動的に選択されます。問題は、ユーザーが入力テキストに何かを入力し、 をクリックしてフォームを直接送信するGet
と、フォームは送信されず、変更イベントのために ajax だけが呼び出され、ラジオが更新されることです。
ボタンを2 回クリックGet
すると、フォームが送信されます。
keyup
また、入力中にユーザーの邪魔になる可能性があるため、使用したくありません。
私はprimefaces 5.1を使用しています
ここに私のコードがあります:
<h:form id="myForm">
<p:selectOneRadio
value="#{myBean.include}" id="IncludeRadio">
<f:selectItem itemValue="Include" itemLabel="Include" />
<f:selectItem itemValue="Exclude" itemLabel="Exclude" />
<p:ajax process="@this" update="@form" />
</p:selectOneRadio>
<p:radioButton id="IncludeRadio0" for="IncludeRadio" itemIndex="0"/>
<p:radioButton id="IncludeRadio1" for="IncludeRadio" itemIndex="1"/>
<p:inputText
value="#{myBean.fieldValue}"
id="FieldValueInputText">
<p:ajax process="@this" update="@form" />
</p:inputText>
<p:commandButton id="GetButton"
action="#{myBean.execute}"
value="Get">
</p:commandButton>
</h:form>
そして豆:
@ManagedBean
@SessionScoped
public class MyBean {
public void setFieldValue(final String fieldValue) {
if (fieldValue != null && !fieldValue.trim().isEmpty()) {
if (!"Include".equals(getInclude())
&& !"Exclude".equals(getInclude())) {
setInclude("include");
}
} else {
setInclude("");
}
}
public void setInclude(String include) {
this.include = include;
}
public String getInclude() {
return this.include;
}
public void execute() {
// do something
}
}