Io cercherò di essere il più breve possibile, si prega di stare con me quiC'è un modo per non inviare un intero modulo Web quando si fa clic su un pulsante?
"A.jsf" -> bean gestito: fagioli "# {} bean.list": ci porterà a B.jsf
<p:growl id="msgs" showDetail="true"/>
<h:form id="myform1" enctype="multipart/form-data">
<p:panel header="Upload" style="font-size: 11px;">
<h:panelGrid columns="2" cellpadding="10">
<h:outputLabel value="Drawing:" />
<p:fileUpload fileUploadListener="#{bean.handleFileUpload}" update="msgs" allowTypes="*.*;"/>
</h:panelGrid>
<p:commandButton ajax="false" immediate="true" id="back" value="Back" action="#{bean.list}"/>
<p:commandButton ajax="false" id="persist" value="Persist" action="#{bean.handleRevision}" />
</p:panel>
</h:form>
Poi il handleFileUpload()
if(!upload){
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "You do not have permission to upload.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
...
"B.jsf" - bean> gestite: bean2
...
<p:growl id="msgs" showDetail="true"/>
...
Quando faccio clic su upload, mi dà un messaggio di errore "Non hai il permesso di caricare". Che è buono. Ma poi quando faccio clic su "Indietro", che mi porterà a B.jsf, vedo il messaggio growl "Non hai il permesso di caricare". ancora. Quello che sembra accadere è che quando clicco su "Indietro", invio un'altra richiesta di modulo da caricare, che poi ha generato lo stesso messaggio di errore, che viene quindi visualizzato in B.jsf. C'è un modo per risolvere questo problema, oltre a mettere il pulsante "Indietro" in una forma vuota, perché ora ho due pulsanti in piedi uno sopra l'altro, invece di fianco a fianco. Io cerco di fare questo:
FacesContext.getCurrentInstance().addMessage("tom", msg);
sperando che avrebbe inviato al componente con id = "tom", così poi il ringhio con id = msg, non otterrebbe il carico, ma senza fortuna. Provo a attivare il flag quando faccio clic sul pulsante Back
, ma il modulo Web viene richiesto prima che venga richiamato il metodo che gestisce la navigazione back
.
Non è così breve come io voglio che sia, perciò voglio scusarmi per questo: D
Eliminare 'ajax =" false "' su 'p: commandButton' del pulsante' Indietro' impedisce a 'fileUploadListener' di essere richiamato, ma impedisce anche' flusso di navigazione'. Di conseguenza, il pulsante 'Indietro' non mi porta dove, tuttavia,' display: inline' funziona alla grande, grazie mille per aver trascorso del tempo su di esso, BalusC –
Prego. – BalusC