Alterar propriedade de componente JSF

Boa noite,

Comecei a estudar JSF e me deparei com uma dúvida.

Como faço para alterar a propriedade de um componente em JSF como por exemplo tornar um commandButton invisível caso um checkBox esteja ativo?

Fiz o código abaixo mas não funcionou!

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sistema de entrevistados</title>
</head>
<body>

<script language="JavaScript">
	function teste(){
			document.getElementById('form:enviar').rendered='true';
		}
</script>

<f:view>

	<h:form id="form" >

        <h:selectBooleanCheckbox onselect="teste();" value="#{entrevistadoBean.entrevistado.aceitaTermo}"  id="aceitaTermo" />
		<h:outputLabel  value="Li e autorizo o envio dos meus dados para seleção" for="aceitaTermo" /><br/>
		
		<h:commandButton actionListener="#{entrevistadoBean.enviar }" value="Enviar" id="enviar"  rendered="false" />

</h:form>

</f:view>

</body>
</html>

O que vocês me dizem?

Abraço

sobre o rendered ele tem que ser ativado ou não, pra que funcione tem q usar algo do tipo…

				<p:commandButton id="btCadastrar" value="Cadastrar"
					update="formPrincipal,formTabela" image="ui-icon-disk"
					action="#{alunoBean.salvar}"
					rendered="#{alunoBean.aluno.nome == null}" />

e atualizar o <h:form id=“formPrincipal”> com a opção update, ou seja, qdo não tiver aluno carregado aparece o botão Cadastrar e vice-versa…

tenho um componente que faz o seguinte, na hora que o cliente seta a data no campo DATA…

<p:fieldset legend="Data de Nascimento" style="font-size:12px;">
								<p:inputMask value="#{alunoBean.aluno.nascimento}" mask="99/99/9999" pattern="dd/MM/yyyy" >
									<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo" />
									<p:ajax event="blur" update="aluno-idade" listener="#{alunoBean.setarIdade}" />
								</p:inputMask>
							</p:fieldset>

… ele faz o cálculo e retorna a idade no componente IDADE…

[code] <p:fieldset legend=“Idade” style=“font-size:12px;”>
<h:outputText id=“aluno-idade” value="#{alunoBean.aluno.idade}" />
</p:fieldset>

[/code]sem usar javascript igual vc está fazendo e sim ajax do framework PRIMEFACES que é o q uso

Bom dia,

Obrigado pela ajuda.

Estou estudando JSF agora, gostaria inicialmente de usar as implementações padrões antes de utilizar PrimeFaces.

<h:selectBooleanCheckbox  value="#{entrevistadoBean.entrevistado.aceitaTermo}"

No código acima eu sei que quando eu ticar o checkBox, o atributo aceitaTermo do meu Bean valerá TRUE, como fazer com que o commandButton enviar seja renderizado apenas quando isso acontecer.

<h:commandButton actionListener="#{entrevistadoBean.enviar }" value="Enviar" id="enviar" rendered="#{entrevistadoBean.entrevistado.aceitaTermo==true }"  />

Eu imaginava que o código acima deveria funcionar, no então não funciona.

Lembro que eu outras circunstâncias isso funcionou como por exemplo:

<h:dataTable id="tabela" var="obj" value="#{entrevistadoBean.lista }" rendered="#{not empty entrevistadoBean.lista }" border="1" width="100%" >

Se você puder esclarecer essa dúvida. Agradeço muito

Um forte abraço :smiley:

Bom se vc estiver usando jsf 2.0 vc pode usar um a instução <f:ajax/>
Ex:

&lt;h:selectBooleanCheckbox  value="#{entrevistadoBean.entrevistado.aceitaTermo}" &gt;
  &lt;f:ajax event="click" render="enviar" /&gt;
&lt;/h:selectBooleanCheckbox&gt;

Obrigado pela resposta

Não consegui usar ajax, deu o seguinte mensagem no eclipse: Unknown tag (f:ajax)

O que pode ser isso? :?:

<f:ajax/> Se é possivel sua utilização com JSF 2.0.
Você deve estar usando a versão 1.x… verifica isso ai

Cara para te ajudar eu fiz um exemplo bem simples…

.xhtml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"&gt;
&lt;h:head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
&lt;title&gt;Exemplo AJAX&lt;/title&gt;
&lt;/h:head&gt;
&lt;h:body&gt;
	&lt;h:form&gt;
		&lt;h:selectBooleanCheckbox value="#{ajax.select}"&gt;
			&lt;f:ajax event="change" render="@all"/&gt;
		&lt;/h:selectBooleanCheckbox&gt;
		&lt;h:outputLabel value="Selecionado?"/&gt;
		<br/>
		&lt;h:commandButton id="button" rendered="#{ajax.select}" value="Submit"/&gt;
	&lt;/h:form&gt;
&lt;/h:body&gt;
&lt;/html&gt;

Manager Bean

package jsf;

import javax.faces.bean.ManagedBean;

@ManagedBean(name="ajax")
public class AJaxManagerBean {
	private Boolean select;
	
	public Boolean getSelect() {
		return select;
	}
	
	public void setSelect(Boolean select) {
		System.out.println("Value: "+select);
		this.select = select;
	}
}

Cara, muito obrigado

Então, eu estou utilizando JSF 2.0, olha o que retorna o TOMCAT

org.apache.jasper.JasperException: /Entrevistado.jsp(49,3) No tag "ajax" defined in tag library imported with prefix "f"

O que pode ser?

Boa tarde,

Consegui resolver, trata-se que é necessário utilizar XHTML e não JSP