Führen Sie die Methode mit Ajax aus
<h:form id="formId">
<div id="uploadArea">
<!--...Kürzung...-->
<f:ajax event="change" execute="uploadArea" render="uploadArea" listener="#{uploadBean.uploadFile}" />
<!--...Kürzung...-->
<div>
<h:message for="uploadArea" errorClass="error" warnClass="warn" infoClass="info" />
</div>
</div>
</h:form>
Ich habe eine Nachricht als Inhalt in einer Methode festgelegt, sie wird jedoch nicht angezeigt
public void uploadFile(AjaxBehaviorEvent event) throws IOException {
if (!isUpload()) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "", "Es wurde keine Datei ausgewählt.");
event.getFacesContext().addMessage("uploadArea", message);
//...Kürzung...
HTML ausgeben
<form id="formId" name="formId" method="post" action="/tryJsf/base.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="formId" value="formId">
<div id="uploadArea">
<!--...Kürzung...-->
<input id="formId:file" type="text" name="formId:file" style="display:none;" onchange="mojarra.ab(this,event,'change','uploadArea','uploadArea')">
<div>
</div>
</div>
<input type="hidden" name="javax.faces.ViewState" id="j_id1:javax.faces.ViewState:0" value="-7689768516583343150:2206148480801750608" autocomplete="off">
</form>
Anscheinend ist es nicht wieder aufgetaucht, nachdem die Methode f: ajax
ausgeführt wurde.
render =" uploadArea "
... wurde ignoriert? Ist das HTML-Tag nutzlos? Sollte es nicht ein JSF-Tag sein?
Ist etwas, das nicht in JSF-Tags geschrieben ist, nicht eine Komponente?
The clientIds of components that will participate in the "render" portion of the Request Processing Lifecycle. ajax(JSF 2.2 View Declaration Language: Facelets Variant)
Führen Sie die Methode mit Ajax aus
<h:form id="formId">
<h:panelGroup id="uploadArea">
<!--...Kürzung...Da es sich um ein JSF-Tag handelt, machen Sie es zum angegebenen ID-Attribut..-->
<f:ajax event="change" execute="formId:uploadArea" render="formId:uploadArea" listener="#{uploadBean.uploadFile}" />
<!--...Kürzung...-->
<div>
<h:message for="formId:uploadArea" errorClass="error" warnClass="warn" infoClass="info" />
</div>
</div>
</h:form>
Wird angezeigt, wenn eine Nachricht als Inhalt in einer Methode festgelegt wird
public void uploadFile(AjaxBehaviorEvent event) throws IOException {
//...Kürzung...Gleich wie vor der Korrespondenz...Ändern Sie nur das angegebene ID-Attribut...
event.getFacesContext().addMessage("formId:uploadArea", message);
//...Kürzung...Gleich wie vor der Korrespondenz...
Recommended Posts