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
luxu
Dezembro 29, 2011, 5:06am
#2
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
jweibe
Dezembro 29, 2011, 7:10am
#4
Bom se vc estiver usando jsf 2.0 vc pode usar um a instução <f:ajax/>
Ex:
<h:selectBooleanCheckbox value="#{entrevistadoBean.entrevistado.aceitaTermo}" >
<f:ajax event="click" render="enviar" />
</h:selectBooleanCheckbox>
Obrigado pela resposta
Não consegui usar ajax, deu o seguinte mensagem no eclipse: Unknown tag (f:ajax)
O que pode ser isso? :?:
jweibe
Dezembro 29, 2011, 7:32am
#6
<f:ajax/> Se é possivel sua utilização com JSF 2.0.
Você deve estar usando a versão 1.x… verifica isso ai
jweibe
Dezembro 29, 2011, 7:48am
#7
Cara para te ajudar eu fiz um exemplo bem simples…
.xhtml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Exemplo AJAX</title>
</h:head>
<h:body>
<h:form>
<h:selectBooleanCheckbox value="#{ajax.select}">
<f:ajax event="change" render="@all"/>
</h:selectBooleanCheckbox>
<h:outputLabel value="Selecionado?"/>
<br/>
<h:commandButton id="button" rendered="#{ajax.select}" value="Submit"/>
</h:form>
</h:body>
</html>
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