私はp:dataTable
を持っています。各行にはp:commondButton
とh:outputText
があり、プロジェクト名を表示しています。 はp:commandButton
をクリックすると、anfrageErfassenModel.applyProjekt()
ActionListenerを呼び出し、すぐに はanfrageErfassenModel.anfrage.name
ためp:inputText
の値を更新する必要があります。更新p:pからのinputText:commandButton
JSFページ - anfrageErfassen.xhtml:
<h:form id="formAnfrageErfassen">
<p:panelGrid columns="3" id="anfrage">
<p:outputLabel for="name" value="#{bundle['anfrage.name']}"/>
<p:inputText id="name" value="#{anfrageErfassenModel.anfrage.name}" required="true" />
<p:message for="name" id="message4name" display="text"/>
</p:panelGrid>
<p:dataTable var="projekt" ...>
<p:column>
<p:commandButton icon="fa fa-check"
title="Apply Project"
update=":formAnfrageErfassen:anfrage"
immediate="true"
actionListener="#{anfrageErfassenModel.applyProjekt(projekt)}"/>
</p:column>
<p:column>
<h:outputText value="#{projekt.name}"/>
</p:column>
</p:dataTable>
</h:form>
豆 - AnfrageErfassenModel.java: - >しかし
@Named
@ViewScoped
public class AnfrageErfassenModel implements Serializable {
private Anfrage anfrage; // with getter/setter
public void applyProjekt(final Projekt projekt) {
logger.entry(projekt);
anfrage = anfrageRestClient.create();
anfrage.setName(projekt.getName()); // take name from projekt
logger.debug("anfrage.name=" + anfrage.getName());
logger.exit();
}
}
のactionListenerが を期待通りにモデルの値が設定されていることの結果anfrage.setName(projekt.getName())
を呼び出しますp:inputText
は更新されていません!
私は、immediate="true"
は、APPLY_REQUEST_VALUESフェーズの後にRENDER_RESPONSEフェーズが続くことを知っています。
inputTextフィールドの値をモデルの現在の値で更新するにはどうすればよいですか? p:inputText
の代わりにp:outputText
を使用しますが、フィールドはユーザーが編集できる必要があるため、inputText
が必要です。
私はWildFly 10.0.0.FinalでPrimefaces 6.0を使用しています。
おかげで、よろしく、 ライナー@Kukeltjeへ
'
'を追加しようとしましたか? –@ YagamiLight:Ajaxは 'p:commandButton'に組み込まれています。そこにajaxタグを追加する必要はありません。 – Kukeltje
@Kukeltjeは私が時々動作すると信じています –