[debutant] Aide sur la configuration d'un projet seam
Bonjour,
J'essaye de me mettre à seam, et pour l'instant je n'arrive pas à grand chose.
Dans l'etat actuel de mon projet, je peux afficher la partie web, mais les EL ne sont jamais interprétés. J'ai donc du zapper un truc.
J'utilise Jboss 4.2.3, Seam 2.1.1, et maven (oui, ça aide pas).
J'ai essayé de suivre des tutos, mais comme aucun ne dit la même chose, je n'ai aucune idée de ce que j'ai fait.
J'ai une page xhtml sur laquelle mon index.html pointe quand on lance l'application, et je voudrais résoudre un EL pour afficher un truc.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?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:s="http://jboss.com/products/seam/taglib"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<title>test seam</title>
</head>
<body>
<f:view>
<h:commandButton value="hello" action="#{hello.sayHello()}" />
<br/>
<h:outputText value="#{hello.result}" />
</f:view>
</body>
</html> |
hello, c'est un EJB session :
Code:
1 2 3 4 5
| @Local
public interface HelloWorldBS {
public String sayHello();
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| @Stateless
@Name("hello")
public class HelloWorldBO implements HelloWorldBS {
private String result;
@Logger
private Log log;
@Override
public String sayHello() {
log.info("appel de say hello");
result = new String("Hello World");
return null;
}
@Out
public String getResult() {
return result;
}
} |
Les fichiers de conf :
web.xml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <web-app>
<display-name>seamprojectWar</display-name>
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.seam</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app> |
faces-config.xml
Code:
1 2 3 4 5
| <faces-config>
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
</faces-config> |
components.xml
Code:
1 2 3 4 5 6 7
| <components>
<core:init jndi-pattern="seamproject/#{ejbName}/local" debug="true" />
<transaction:ejb-transaction />
</components> |
pages.xml
Code:
1 2 3 4 5 6 7 8 9
| <pages>
<page view-id="/bouton.xhtml">
<navigation from-action="#{hello.sayHello()}">
<redirect view-id="/bouton.xhtml" />
</navigation>
</page>
</pages> |
Le bouton s'affiche, mais quand je clique dessus, il ne se passe rien. C'est probablement le B.A-BA que je demande, mais j'ai beau triturer le code dans tous les sens, ça ne change rien.
J'ai essayé sans le pages.xml, sans le @out dans la session, etc.. bref, je ne sais pas du tout quoi faire, et les tutos ne m'aident pas du tout.
Merci de votre aide.