Como obter HTML 'enxuto' com JSF?

29 respostas
Marcelo_de_Andrade

Bom dia, pessoal!

Estou procurando por dicas, técnicas, manobras, qualquer coisa que ajude o JSF a gerar um HTML mais limpo, pois vejo que há muita ‘sujeira’.

Código:

<!DOCTYPE html>

<html xmlns="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:p="http://primefaces.org/ui">

	<h:head>
	   <title>NETSOS</title>
	</h:head>
	
	<h:body>
        
        <h:form>
            <p:outputLabel for="Usuário"/>
            <p:inputText id="Usuário" title="Usuário"></p:inputText>
            
            <p:outputLabel for="Senha"/>
            <p:inputText id="Senha" type="password"></p:inputText>
        </h:form>
        
	</h:body>

</html>

Resultado:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><link type="text/css" rel="stylesheet" href="/NETSOS/faces/javax.faces.resource/theme.css?ln=primefaces-bootstrap" /><link type="text/css" rel="stylesheet" href="/NETSOS/faces/javax.faces.resource/primefaces.css;jsessionid=9D4D0A4BE2DF716F77D739D5C3FB665A?ln=primefaces" /><script type="text/javascript" src="/NETSOS/faces/javax.faces.resource/jquery/jquery.js;jsessionid=9D4D0A4BE2DF716F77D739D5C3FB665A?ln=primefaces"></script><script type="text/javascript" src="/NETSOS/faces/javax.faces.resource/primefaces.js;jsessionid=9D4D0A4BE2DF716F77D739D5C3FB665A?ln=primefaces"></script>
	   <title>NETSOS</title></head><body>
<form id="j_idt5" name="j_idt5" method="post" action="/NETSOS/faces/index.xhtml;jsessionid=9D4D0A4BE2DF716F77D739D5C3FB665A" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt5" value="j_idt5" />
<label id="j_idt5:j_idt6" class="ui-outputlabel" for="j_idt5:Usuário"></label><input id="j_idt5:Usuário" name="j_idt5:Usuário" type="text" title="Usuário" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all" /><script id="j_idt5:Usuário_s" type="text/javascript">PrimeFaces.cw('InputText','widget_j_idt5_Usuário',{id:'j_idt5:Usuário'});</script><label id="j_idt5:j_idt7" class="ui-outputlabel" for="j_idt5:Senha"></label><input id="j_idt5:Senha" name="j_idt5:Senha" type="password" class="ui-inputfield ui-inputtext ui-widget ui-state-default ui-corner-all" /><script id="j_idt5:Senha_s" type="text/javascript">PrimeFaces.cw('InputText','widget_j_idt5_Senha',{id:'j_idt5:Senha'});</script><input type="hidden" name="javax.faces.ViewState" id="j_id1:javax.faces.ViewState:0" value="-7652260806389478852:-5358734546729045640" autocomplete="off" />
</form></body>

</html>

29 Respostas

fredericomaia10

Não vejo nenhuma solução. Se quer ter controle e fazer ajustes finos de HTML, CSS e JS o melhor é não usar JSF.
Tem como melhorar os id’s dos elementos e tal, mas nada que ajude muito.

Hebert_Coelho

Esse é o comportamento não do JSF apenas, mas de um framework component based.

O que você poderia fazer é pesquisar sobre o JSF 2.2 que vem com a funcionalidade para limpar o html.

abaixo, algo válido:
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:jsf="http://xmlns.jcp.org/jsf">
<head jsf:id="head">
    <title>JSF 2.2</title>
</head>
<body jsf:id="body">
  <form jsf:id="form">
    <input type="text" jsf:id="name"
        placeholder="Enter name"
        jsf:value="#{bean.name}"/>
    <button jsf:action="#{bean.save}">Save</button>
  </form>
</body>
</html>
Note que agora é muito mais simples o HTML (sem o facelets), MAS você tem que ver se o primefaces está compatível com essa nova funcionalidade. [=
fredericomaia10
Hebert Coelho:
Esse é o comportamento não do JSF apenas, mas de um framework component based.

O que você poderia fazer é pesquisar sobre o JSF 2.2 que vem com a funcionalidade para limpar o html.

abaixo, algo válido:
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:jsf="http://xmlns.jcp.org/jsf">
<head jsf:id="head">
    <title>JSF 2.2</title>
</head>
<body jsf:id="body">
  <form jsf:id="form">
    <input type="text" jsf:id="name"
        placeholder="Enter name"
        jsf:value="#{bean.name}"/>
    <button jsf:action="#{bean.save}">Save</button>
  </form>
</body>
</html>
Note que agora é muito mais simples o HTML (sem o facelets), MAS você tem que ver se o primefaces está compatível com essa nova funcionalidade. [=

Li um pouco sobre o JSF 2.2 na Java Magazine. Parece bem mais interessante escreve-lo assim. Sabe se isso já funciona assim pra todo o JSF 2.2 Hebert?

Hebert_Coelho

fredericomaia10:
Sabe se isso já funciona assim pra todo o JSF 2.2 Hebert?
Para o JSF 2.2 sim, para componentes eu duvido fortemente.

J

fredericomaia10:
Não vejo nenhuma solução. Se quer ter controle e fazer ajustes finos de HTML, CSS e JS o melhor é não usar JSF.
Tem como melhorar os id’s dos elementos e tal, mas nada que ajude muito.

Penso a mesma coisa! Se tem esse requisito, tente evitar ao máximo o acoplamento da camada de visualização com qualquer tecnologia que não seja HTML/CSS/JS.
Em compensação é bom colocar na balança o quanto estes ajustes finos valem a pena em pró da perda de produtividade.

rodrigo.uchoa

Use Apache Wicket :slight_smile:

fredericomaia10

E qual seria a real razão para querer um HTML mais limpo?

Hebert_Coelho

rodrigo.uchoa:
Use Apache Wicket :)
Quem dera trocar um framework fosse opção cabível para o dia a dia…

Hebert_Coelho

fredericomaia10:
E qual seria a real razão para querer um HTML mais limpo?
Fica mais fácil de um webdesign trabalhar em seu projeto. [=
Ou manipular os trem com jquery.

fredericomaia10

Hebert Coelho:
fredericomaia10:
E qual seria a real razão para querer um HTML mais limpo?
Fica mais fácil de um webdesign trabalhar em seu projeto. [=
Ou manipular os trem com jquery.

Possíveis razões eu sei. =]
Estou querendo saber do autor do tópico. Quais seriam os motivos dele.

Hebert_Coelho

fredericomaia10:
Possíveis razões eu sei. =]
Estou querendo saber do autor do tópico. Quais seriam os motivos dele.
A tá, desculpa. :’(

:stuck_out_tongue:

javaflex

Desculpa ser muito direto, mas é melhor mesmo não usar nenhuma solução componente based.

Marcelo_de_Andrade

Questão de layout mesmo pois terei um front-end me ajudando e facilitaria a leitura do código.

@Hebert Coelho

Obrigado pela dica, procurarei saber do recurso no JSF 2.2

Alguém tem alguma dica então para trabalhar com Java web e não utilizar JSF e etc?

Hebert_Coelho

Marcelo de Andrade:
Alguém tem alguma dica então para trabalhar com Java web e não utilizar JSF e etc?
hum… não trabalhar com JSF?

igor_ks

Já que tem um web designer, manda bala tudo em framework action based

fredericomaia10

Se tem como opção mudar o framework parte pra algum action-based como VRaptor que é muito bom e tem curva de aprendizado bem baixa ou Spring MVC.

Hebert_Coelho

Só um detalhe, tem como você limpar também o CSS plotado pelo primefaces por exemplo, o que facilita a vida para um web design.

Action based tem SpringMVC que vc encontra mais vaga no mercado de trabalho. Tem também o Stripes que ouvi falar muito bem dele.

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

A

Hebert Coelho:

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

De maneira geral eu concordo contigo que esta é uma preocupação válida.

No caso específico do Vraptor, acho que você não precisa procurar profissionais que conheçam o framework.
Se a pessoa conhece Spring MVC, por exemplo, ele vai achar Vraptor um passeio no parque.

fredericomaia10

AbelBueno:
Hebert Coelho:

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

De maneira geral eu concordo contigo que esta é uma preocupação válida.

No caso específico do Vraptor, acho que você não precisa procurar profissionais que conheçam o framework.
Se a pessoa conhece Spring MVC, por exemplo, ele vai achar Vraptor um passeio no parque.

+1

Hebert_Coelho

AbelBueno:
Hebert Coelho:

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

De maneira geral eu concordo contigo que esta é uma preocupação válida.

No caso específico do Vraptor, acho que você não precisa procurar profissionais que conheçam o framework.
Se a pessoa conhece Spring MVC, por exemplo, ele vai achar Vraptor um passeio no parque.

Pois é, mas vi inclusive uma pessoa de rh preocupada pois não encontrava ninguém relacionada ao VRaptor para contratar.

Pode ser fácil, mas ainda assim eu não o escolheria por causa disso para um projeto que envolvesse muito dinheiro.

Se esse não é o caso aqui, vá e seja feliz. [=

fredericomaia10

Hebert Coelho:
Pois é, mas vi inclusive uma pessoa de rh preocupada pois não encontrava ninguém relacionada ao VRaptor para contratar.

Pode ser fácil, mas ainda assim eu não o escolheria por causa disso para um projeto que envolvesse muito dinheiro.

Se esse não é o caso aqui, vá e seja feliz. [=

A maioria vai na onda de “não vejo vagas, não vou aprender”, e quem toma a decisão pensa “não acho quem saiba, não vou usar”. E ficarão eternamente com as mesmas tecnologias e perderão a oportunidade de inovar e usar um framework fantástico. Isso não é só sobre o VRaptor, vale pra cada tecnologia nova, boa, produtiva e/ou melhor que existe e o pessoal não tem coragem de experimentar. Acho isso um erro. Talvez não caiba inovação em fábricas de software que são a maioria.

E voltando ao caso se a empresa quer usar VRaptor basta contratar alguém que conheça bem JSP e Servlets, ou Spring MVC, ou Struts. E o cara vai passear no VRaptor.

Hebert_Coelho

fredericomaia10:
Hebert Coelho:
Pois é, mas vi inclusive uma pessoa de rh preocupada pois não encontrava ninguém relacionada ao VRaptor para contratar.

Pode ser fácil, mas ainda assim eu não o escolheria por causa disso para um projeto que envolvesse muito dinheiro.

Se esse não é o caso aqui, vá e seja feliz. [=

A maioria vai na onda de “não vejo vagas, não vou aprender”, e quem toma a decisão pensa “não acho quem saiba, não vou usar”. E ficarão eternamente com as mesmas tecnologias e perderão a oportunidade de inovar e usar um framework fantástico. Se a empresa quer usar basta contratar alguém que conheça bem JSP e Servlets, ou Spring MVC, ou Struts. Quando o desenvolvedor estudar o VRaptor vai ver o quanto é fácil.

Engraçado como conheço muita gente que pensa “não vejo vagas, não vou aprender” e tem aprendido outros “frameworks fantásticos”.
Bem… não vou continuar essa discussão pq não cabe a tópico uma vez cabe ao tópico.

fredericomaia10

Até editei meu comentário antes de vc responder pq não me refiro apenas ao VRaptor no que disse acima. Não me refiro a você Hebert. Me refiro a maioria que não estuda nada além do que usa na empresa. E muitos nem o que usam não estudam para compreender melhor, apenas usam.

JSF mesmo é uma vítima destes desenvolvedores que usam sem saber o mínimo necessário.

Rodrigo_Sasaki

Falar isso é fácil, agora RH é RH :slight_smile:

VRaptor é VRaptor, nesse filtro inicial duvido que alguém saiba o que é action-based, sevlets e JSP :slight_smile: O equals aí é duro mesmo hehehe

Mas pra seguir na sugestão de frameworks action based, o Play! também tá fazendo sucesso

Marcelo_de_Andrade

haha! Obrigado pela atenção que estão dando a minha dúvida! Me desculpem não responder logo, correria do trabalho…

Bem, eu estava justamento procurando por algo que trabalhasse como o JSP/Servlet pois eu queria abstrair a camada das páginas HTML do Java. Quer dizer que posso fazer isso com Frameworks específicos como SpringMVC/VRaptor/Mentawai/Struts(?) ?

Caso esteja falando besteira, me corrijam, estou estudando e não tenho tanto conhecimento nessa área.

Hebert_Coelho

Marcelo de Andrade:
haha! Obrigado pela atenção que estão dando a minha dúvida! Me desculpem não responder logo, correria do trabalho…

Bem, eu estava justamento procurando por algo que trabalhasse como o JSP/Servlet pois eu queria abstrair a camada das páginas HTML do Java. Quer dizer que posso fazer isso com Frameworks específicos como SpringMVC/VRaptor/Mentawai/Struts(?) ?

Caso esteja falando besteira, me corrijam, estou estudando e não tenho tanto conhecimento nessa área.

Sim.

rodrigo.uchoa

Só para corroborar com o que já disseram… Apache Wicket é um pouco exceção, pois é component-based e mesmo assim não o prende a usar nada mais do que html. É o melhor dos dois mundos! :smiley:

J

Hebert Coelho:
AbelBueno:
Hebert Coelho:

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

De maneira geral eu concordo contigo que esta é uma preocupação válida.

No caso específico do Vraptor, acho que você não precisa procurar profissionais que conheçam o framework.
Se a pessoa conhece Spring MVC, por exemplo, ele vai achar Vraptor um passeio no parque.

Pois é, mas vi inclusive uma pessoa de rh preocupada pois não encontrava ninguém relacionada ao VRaptor para contratar.

Pode ser fácil, mas ainda assim eu não o escolheria por causa disso para um projeto que envolvesse muito dinheiro.

Se esse não é o caso aqui, vá e seja feliz. [=


Nessa caso a culpa não é do RH e sim do gestor que solicitou a vaga!
Um bom programador Java aprende qualquer framework. Isso pode até ser um diferencial para a vaga, mas nunca um requisito obrigatório.
Se um gestor pensa que conhecer framework é a coisa mais importante para a vaga de trabalho, tenho até dó da pessoa que vai ser subordinada a ele. Eu evitaria trabalhar nessa empresa.
Além do mais, bons programadores aprendem o básico dos frameworks mais usados do mercado pelo menos para poderem concorrer nestas vagas.

Já em questão de projetos que envolvem muito dinheiro a questão não acho que seria o framework em si, mas o fato de ser mantido por uma empresa pequena. Escolher algo “maior” pode ter suas vantagens em um projeto grande e caro! É a mesma coisa que ter de optar entre o Linux Red Hat e o Slitaz.

javaflex

AbelBueno:
Hebert Coelho:

O VRaptor ouço falar bem, mas se sua preocupação for framework para mercado de trabalho e achar profissional que conheça o framework eu não indico.

De maneira geral eu concordo contigo que esta é uma preocupação válida.

No caso específico do Vraptor, acho que você não precisa procurar profissionais que conheçam o framework.
Se a pessoa conhece Spring MVC, por exemplo, ele vai achar Vraptor um passeio no parque.


Isso é verdade do conhecimento em action based ser suficiente para trabalhar com VRaptor. Mas na prática do que já vi, as vagas pedem VRaptor diretamente sem mencionar que o principal é ter conhecimentos de framework action based. Que pelo menos tenha experimentado VRaptor, gostado e esteja afim de aprender.

Outra questão é o próprio profissional já não querer a vaga para não ficar trabalhando em algo que não é tão valorizado no mercado como outros frameworks, é uma relativa perda de tempo em bagagem para o cara, isso é natural do ser humano, por mais que a tecnologia seja perfeita tecnicamente.

Não sei como está o marketing do VRaptor internacionalmente, mas isso ajuda muito no crescimento. O crescimento do uso tem que partir mais da própria desenvolvedora.

Criado 25 de setembro de 2013
Ultima resposta 26 de set. de 2013
Respostas 29
Participantes 9