Ola,
Eu estou fazendo um app onde quero funcionar como a seguinte identidade visual:
1 - Quando entrar na pagina, todos os campos inputs estao com a opcao disable=“true”.
2 - No momento que eu aperter o botao cadastrar/alterar ele altera os inputs para disable=“false”
Tem como fazer isso?
Hoje eu tenho isso funcionando mas da forma abaixo:
<p:toolbar>
<f:facet name="left">
<p:commandButton value="CADASTRAR" action="#{controller.cadastrar()}" update="@form"/>
<p:commandButton value="EDITAR" action="#{controller.editar()}" update="@form"/>
<p:commandButton value="PESQUISAR" onclick="PF('modalPesquisa').show();" />
<p:commandButton value="CANCELAR" action="#{controller.cancelar()}" update="@form"/>
<p:commandButton value="SALVAR" action="#{controller.salvar()}" update="@form"/>
<p:commandButton value="EXLCUIR" action="#{controller.excluir()}" update="@form"/>
</f:facet>
</p:toolbar>
<h:panelGroup id="visualiza" rendered="#{!controller.edicao}">
<h:inputText disable="true" value="#{controller.pessoa.nome}"/>
</h:panelGroup>
<h:panelGroup id="editar" rendered="#{controller.edicao}">
<h:inputText value="#{controller.pessoa.nome}"/>
</h:panelGroup>
@ManagedBean(name="controller")
@ViewScoped
public class BeanController {
public void cadastrar() {
pessoa = new Pessoa();
edicao = true;
}
public void editar() {
edicao = true;
}
public void selecionar() {
pessoa = pessoas.getRowData();
}
public void cancelar() {
pessoa = new Pessoa();
edicao = false;
}
public void salvar() {
pessoa = service.salvar(pessoa);
listar();
edicao = false;
}
public void excluir() {
service.excluir(empresa);
listar();
}
public void listar() {
pessoas = new ListDataModel<>(service.pesquisar(pesquisa));
}
}
o problema disso é que quando tenho entidades grandes eu tenho que ficar repetindo todos os atributos no pagina. que fica grande demais.
Por isso quero saber se tem como ao executar a acao do botao, alguma funcao javascript ou do proprio jsf mudar o atributo do campo disable de true para false.