Olá Pessoal,
Tenho uma página JSF com as opções de incluir, editar e remover. As opções somete serão demonstradas se o usuário logado tiver acesso. Eu seto a variável no bean, conforme o nível de aceso do usuário no debug a variável esta com conteúdo true, mas o commandLink do código abaixo não é mostrado, mostra somente se eu forçar a atualização da página no navegador.
<table>
<tr>
<td>
<c:if test="#{clasFiscalFace.isIncluir}" id="id-incluir">
<h:commandLink title="Incluir registro" action="#{clasFiscalFace.doCreateClasFiscal}" id="bt_nova">
<p:graphicImage title="Novo registro" value="#{pageContext.servletContext.contextPath}/resources/imagens/incluir.png" width="25" height="25" alt="Novo registro"/>
</h:commandLink>
</c:if>
Obrigado,
Os valores já foram alterados correto? Então apenas atualize o painel que detém a condição de exibição. Troque:
<c:if test="#{clasFiscalFace.isIncluir}" id="id-incluir">...</c:if>
por
<h:panelGroup layout="block" id="id-incluir" rendered="#{clasFiscalFace.isIncluir}">...</h:panelGroup>
o rendered é o responsável por exibir ou não o painel, como diz o nome, é a renderização, e ao realizar a verificação, você deve atualizar este painel do id-incluir para exibir ou não o que consta nele de acordo com a sua condição.
Olá
Sim o valor foi alterado no bean, conforme código abaixo, mas a página JSF pega o primeiro valor (da definição que nesse caso é false). Fiz o teste sugerido, mas continua o problema somente é atualizada na segunda vez que é acessada.
@Named
@SessionScoped
public class ClasFiscalFace extends BaseCDIBean<ClasFiscal> {
private static final long serialVersionUID = 7L;
@Inject
private UsuarioFace userLogado;
private boolean isIncluir = false;
private boolean isRemover = false;
private boolean isConsultar = false;
private boolean isEditar = false;
public ClasFiscalFace() {
setSelectedBean(new ClasFiscal());
}
public LazyDataModel<ClasFiscal> getListClasFiscal() {
for (UsuarioPrograma usuarioPrograma : userLogado.getListUsrProg()) {
if ("/views/comercial/cadastros/clasfiscal/list.faces".equals(usuarioPrograma.getPrograma().getCaminho())) {
setIsIncluir(usuarioPrograma.isIncluir());
}
}
}
Obrigado
Você atualizou o componente?
RequestContext.getCurrentInstante().update("componente");