Gostaria de pegar a altura layoutUnit “center” e assim com essa altura poder setar a altura dos panels que eu vou colocar dentro dele
Tentei usar o seguinte javascript mas nao tive nenhum sucesso:
Você está tentando pegar por meio do id “panel2”, ok? Tem como você exibir a codificação do “panel2”?
Até!
R
renatakemi
Oi!
Eu tenho um index que utiliza o meu template e no meu index eu chamo a minha home.
Meu index:
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:a4j="http://richfaces.org/a4j"xmlns:rich="http://richfaces.org/rich"xmlns:p="http://primefaces.prime.com.tr/ui"><head><title>Title</title><metacontent='text/html; charset=ISO-8859-1'http-equiv='Content-Type'/><p:resources/></head><body><f:view><!-- Carrega o templante montado na outra pagina --><ui:compositiontemplate="template.xhtml"><!-- Carrega a parte CABECALHO do template --><ui:definename="header">
.
.
.
</ui:define><!-- Carrega a parte Lateral do template (tree)--><ui:definename="tree">
.
.
.
</ui:define><!-- Carrega a parte Central do template (conteudo)--><ui:definename="content"><a4j:includeviewId="#{url.url}"style="margin:0;padding:0;"/> ---------------------------------> Aqui eu chamo minha home.jsp
</ui:define><!-- Carrega a parte do RODAPE do template --><ui:definename="bottom"><ui:includesrc="pageFooter.jsp"/></ui:define></ui:composition></f:view></body></html>
Minha home:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:a4j="http://richfaces.org/a4j"xmlns:rich="http://richfaces.org/rich"xmlns:p="http://primefaces.prime.com.tr/ui"><head><title>Home</title><scripttype="text/javascript">varelemento=myLayout.getUnitByPosition("center");varaltura=elemento.get("altura");document.getElementById("panel2").style.height=(altura/2-16)+'px';</script></head><body><h:formid="formHome"><h:panelGridid="homeGrid"columns="2"width="100%"cellpadding="8px"><p:panelid="panel1"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 1"/></f:facet><ui:includesrc="/panel1.jsp"/></p:panel><p:panelwidgetVar="panel2"id="panel2"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 2"/></f:facet><a4j:includeviewId="panel2.jsp"/></p:panel><p:panelid="panel3"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 3"/></f:facet><ui:includesrc="panel3.jsp"/></p:panel><p:panelid="panel4"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 4"/></f:facet><ui:includesrc="panel4.jsp"/></p:panel></h:panelGrid></h:form></body></html>
Já tentei colocar o script na pagina de template tb e nada…
alguma ideia?
Vlw!!!
G
guilhermehbueno
tenta colocar o seu form assim: <h:form prependId=“false”>
ou quando for se referir ao elemento panel2 coloque o id do form antes —> formHome:panel2
R
renatakemi
Oi Guilherme!
Obrigada por responder!
Eu coloquei o formHome: antes do id do panel: document.getElementById(“formHome:panel2”).style.height=“220px”;
e tentei tb colocando <h:form prependId=“false”> e document.getElementById(“panel2”).style.height=“220px”;
mas não adiantou…
B
barbon
Olá Renata,
Qual navegador você está utilizando? Caso seja o FF, observe o Ferramentas->Console de Erros (CTRL+SHIFT+J) e verifique se aparece o erro de JavaScript.
Uma tentativa seria evitar usar o mesmo nome para diferentes atributos, notei no seu código o id e o widgetVar com o mesmo nome. Já tive problemas em projetos faces por repetir nomes.
Até.
R
renatakemi
Oi Barbon!
Obrigada por responder! Valeu pela dica, vou mudar os nomes para evitar problemas.
Eu fui no console de erros do FF e lá fala que o myLayout não está definido e que o panel2 é null. :shock:
você sabe se javascript realmente altera componentes jsf?
Vlw!
B
barbon
Olá,
Javascript modificaria sim, pois independente da tecnologia (JSP, JSF… ASP.Net) a linguagem interpretada pelos navegadores é HTML, onde a mesma é manipulável via linguagem dinâmica.
Basta agora ajustar a referência ao componente e ajustar o Javascript.