Duvida Uso de List com Scriptlet

Ola galera no java quando criamos uma lista a parti do java7, não precisamos passa o segundo tipo de dados no segundo operador diamante.
Podemos fazer assim declarando apenas string no primeiro <>.
List<String> nomes = new ArrayList<>(); ,

Porem estudando java EE , scriptlets , fiz uma lista de nomes para exibir no navegador…
E quando uso o codigo com o segundo <> sem o tipo de dados ele da erro :

<% List<String> nomes = new ArrayList<>(); nomes.add("Rodrigo"); nomes.add("Edson"); nomes.add("Telma"); for(String s : nomes){ out.println("Nomes: " + s + "</br>"); } %>

Ja dessa maneira aqui ele roda normal, alguem sabe por que ?
<% List<String> nomes = new ArrayList<String>(); nomes.add("Rodrigo"); nomes.add("Edson"); nomes.add("Telma"); for(String s : nomes){ out.println("Nomes: " + s + "</br>"); } %>

E que tal deixar isso na sua classe java, tirar da sua view, e usar jstl ?

breve cara ainda estou no começo, dos estudo em java EE…

Só queria saber o por que…

Estou fazendo este curso aqui :
Bem completo :
Curso de Java EE

1 curtida

Testei o seu primeiro código e funcionou aqui.

poste uma print do erro se possível.

Na boa, é perda de tempo praticar isso ai. Só precisa saber que existiu essa forma.

Usei o Glassfish 4.1 com o NetBeans 8.1 para testar e também deu problema.

Resolvi modificando o arquivo glassfish-web.xml que fica dentro do diretório de instalação do Glassfish. Neste arquivo eu adicionei as seguintes duas linhas:

<property name="compilerSourceVM" value="7"/>
<property name="compilerTargetVM" value="7"/>

Se você colocar o 8 no lugar do 7 deve funcionar também. No final o arquvo ficou assim:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>

    <property name="compilerSourceVM" value="7"/>
    <property name="compilerTargetVM" value="7"/>
  </jsp-config>
</glassfish-web-app>
1 curtida

Ja estou em el expressões language que substituem o uso de scriptlets, vi que scriptlet nao são muito usado.

1 curtida

voce tambem pode utilizar essa configuração no arquivo default-web.xml localizado no : AONDE ESTA SEU SERVIODOR \glassfish\domains\domain1\config

assim todos os projetos estarão configurado para 7/8 .

ou utilizar o TomCat 8 ou Wildfly , que não vai precisar configurar essa parte.

2 curtidas

Acho que deve ser o toncat mesmo, estou usando o 7, esqueci de usar o 8, vou testa aqui para ver…

Vou testa aqui , sera que jvm para jee por padrão vem com java ee 6 ?

A JVM usada é a que está instalada no seu computador. Quando você baixa o Tomcat ele vem apenas o Tomcat que é a implementação de parte do Java EE. Eu digo parte porque na página inicial do site diz que ele é a implementação das tecnologias Servlet, JSP, EL e WebSocket. Mas enfim… Fiz testes aqui com o Tomcat 7.

Na pasta onde está o Tomcat, vá na pasta conf e abra o arquivo web.xml. Em algum lugar dele você encontrará este trecho:

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

Modifique-o para que fique assim:

<servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>

        <init-param>                                    <!-- this should be added -->
            <param-name>compilerSourceVM</param-name>
            <param-value>1.7</param-value>
        </init-param>
        <init-param>
            <param-name>compilerTargetVM</param-name>
            <param-value>1.7</param-value>
        </init-param>

        <load-on-startup>3</load-on-startup>
    </servlet>
1 curtida

Funcionou valeu cara.

1 curtida