Boa tarde galera, tudo certo? Bem, na minha aplicação tenho dois input. Um deles sendo para o código e outro para uma String. Também, tenho um commandButton que abre um Dialog. Como funciona: No meu cadastro de reservas, a pessoa pode digitar o código do usuário e dar um Tab, daí aparece o nome do usuário… caso contrário, ela abe o dialog e seleciona o usuário por lá.
Fiz o seguinte: Se é digitado um código que não existe, ele dá a mensagem que o código não existe e limpa o campo que é digitado. Porém, eu queria que também fosse setado o focus nesse campo para que o usuário pudesse voltar nele sem precisar clicar.
Abaixo o xhtml:
<div>
<td align="right">Usuário:</td>
<h:panelGrid columns="3">
<p:inputMask onkeydown="chamaDialog(event, 'codigo_usuario');" id="codigo_usuario" size="6" mask="9?9999" required="true" requiredMessage="O campo usuário deve ser informado." placeHolder="" value="#{reservasJsfBean.codigoUsuarioBibParaRegistro}" >
<f:ajax render="codigo_usuarioMostra grow4 codigo_usuario" event="change" listener="#{reservasJsfBean.atualizarUsuarioPorCodigo(event)}"/>
</p:inputMask>
<p:inputText id="codigo_usuarioMostra" size="50" disabled="true" required="true" requiredMessage="O campo usuário deve ser informado." value="#{reservasJsfBean.crudObj.resleitor.usuNome}" style="opacity: 2"/>
<p:commandButton id="abreDialogUsu" icon="ui-icon-search" onclick="usuarioDialog.show()"/>
</h:panelGrid><br/>
</div>
E no meu bean:
public void atualizarUsuarioPorCodigo(AjaxBehaviorEvent event) {
fillUsuarioPorCodigo(this.codigoUsuarioBibParaRegistro);
}
private void fillUsuarioPorCodigo(String codigo) {
if (codigo != null && !codigo.trim().equals("")) {
Usuariobib usuarioBuscado = u.findUsuarioByCodigo(codigo);
if (usuarioBuscado != null) {
if (exe.usuarioInadimplente(usuarioBuscado.getUsuCodigo())) {
warn("O usuário está inadimplente com a biblioteca. "
+ "Para reservar exemplares é preciso pagar"
+ " as multas.");
codigoUsuarioBibParaRegistro = "";
crudObj.setResleitor(null);
} else {
crudObj.setResleitor(usuarioBuscado);
}
} else {
warn("O usuário com o código " + codigo + " não existe.");
codigoUsuarioBibParaRegistro = "";
crudObj.setResleitor(null);
}
} else {
this.usuariosList = getCrudService().findAll(Usuariobib.class, "usuNome");
crudObj.setResleitor(null);
}
}
Não sei se eu poderia fazer com que fosse setado o foco diretamente no xhtml ou se posso fazer isso no meu bean… Se alguém puder ajudar, agradeço mto…