Come disabilitare / abilitare il campo di input JSF in JavaScript?

Ho un inputField, o qualche altro tag, che voglio essere disabilitato unitl utente fa clic su di esso.

Qualcosa del genere , ma non riesco a farlo funzionare in JSF.

$("div").click(function (evt) { $(this).hide().prev("input[disabled]").prop("disabled", false).focus(); }); 

Aggiungo disabled = true “al mio campo di input e div valore impostato su (tutti i tag principali in questo caso solo uno), qualcosa come j_idt13 e div del campo di input, quindi il valore” div “sembra j_idt13: inputID

Qualcuno può aiutarmi con jQuery solutin?

Mi piacerebbe sapere come si può fare in JSF, e come.

Devi passare dal lato server, non dal lato client. JSF come un framework MVC basato su componenti stateful protegge in questo modo da richieste manomesse / violate in cui l’utente utilizza linguaggi / strumenti client come HTML o JS per manipolare l’albero DOM HTML e / oi parametri di richiesta HTTP in modo tale che il risultato di JSF disabled attributo disabled , readonly o perfino rendered è alterato.

Immagina cosa succederebbe se lo sviluppatore JSF verificasse il ruolo di un utente in tale attributo booleano rispetto al ruolo di amministratore come disabled="#{not user.hasRole('ADMIN')}" e un hacker lo manipolava in modo tale che non fosse non più attivo per gli utenti non amministratori. Questo è esattamente il motivo per cui puoi modificare solo gli attributi menzionati (e l’attributo required e tutti i convertitori, i validatori, gli ascoltatori di eventi, ecc.) Dal lato server.

È ansible utilizzare in qualsiasi componente ClientBehaviorHolder per raggiungere il requisito. Puoi consentire a JSF di generare un

HTML tramite , che è anche un ClientBehaviorHolder :

   Click this div to toggle the input.     

Con questo @ViewScoped gestito @ViewScoped ( @RequestScoped non funzionerebbe per le ragioni citate in # 5 di commandButton / commandLink / ajax, metodo action / listener non richiamato o valore di input non aggiornato ):

 @Named @ViewScoped public class Bean implements Serializable { private boolean enabled; public void toggle() { enabled = !enabled; } public boolean isEnabled() { return enabled; } } 

Guarda anche:

  • Qual è la necessità di JSF, quando l’interfaccia utente può essere raggiunta da CSS, HTML, JavaScript, jQuery?
  • Perché JSF salva lo stato dei componenti dell’interfaccia utente sul server?

Indipendentemente dal problema concreto, consulta le seguenti risposte nel caso in cui tu sia realmente interessato a come ottenere la rappresentazione HTML dei componenti JSF tramite JS / jQuery:

  • Come selezionare i componenti JSF usando jQuery?
  • Come posso conoscere l’id di un componente JSF in modo da poterlo usare in Javascript