Have you started using the project archetype? This is the easiest way to
have a correct directory srtucture.
Anyway, I think the paths should be
MyProject/src/papo/pages/
MyProject/src/papo/services/
Kind regards,
Joachim
Michael Bernagou wrote:
I have something strange and it made me asking this question :
What are the mandatory project tree elements? (sorry for my english I
don't
now how to write it differently).
So, my project is :
MyProject/src/papo.pages/[all pages such as Start.java and
Start.properties]
MyProject/src/papo.services/[ioc stuff]
MyProject/webroot/[all template such as Start.tml and Start_fr.tml]
But I have this error :
java.lang.RuntimeException Page Start did not generate any markup when
rendered. This could be because its template file could not be located,
or
because a render phase method in the page prevented rendering.
****************
Start.tml:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<head>
<title>Paper and Pen Online</title>
</head>
<body>
<form t:type="BeanEditForm" object="login">
<t:parameter name="password">
<label t:type="Label" for="password"></label>
<input t:type="PasswordField" t:id="password" t:validate="required"
t:value="login.password" />
</t:parameter>
</form>
<p>Si vous n'avez pas encore de compte, <t:pagelink
page="Register">crees-en
un!!</t:pagelink></p>
<p color="red">${message}</p>
</body>
</html>
*******************
Start.java:
package papo.pages;
import org.apache.tapestry.annotations.ApplicationState;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.ioc.annotations.Inject;
import papo.data.Login;
import papo.data.UserLite;
import papo.exception.PapoException;
import papo.model.User;
import papo.services.ApplicationService;
import papo.services.UserService;
/**
* Start page of application papo.
*/
public class Start {
private static final String SUCCESS = "Home";
private static final String FAILURE = "Start";
@Persist
private Login login;
public Login getLogin() { return login; }
public void setLogin(Login login) { this.login = login; }
private String message;
public String getMessage() { return message; }
public void setMessage(String message) { this.message = message; }
@ApplicationState
private User user;
@InjectPage
private Home home;
@Inject
private UserService userService;
@Inject
private ApplicationService applicationService;
String onSuccess() {
try {
user = userService.getAuthenticatedUser(login.getLogin(),
login.getPassword());
if (user != null) {
home.setUser(user);
UserLite userLite = new UserLite(user.getLogin());
applicationService.makeOnline(userLite);
home.setUsers(applicationService.getUserList().getUserList());
}
else {
message = "Login ou Password inconnue. L'identification a
échoué.";
return FAILURE;
}
}
catch (PapoException pe) {
message = "La procedure d'identification a rencontré un probleme
!!";
return null;
}
return SUCCESS;
}
}
It didn't enter in Start.java (I put a debug point) because it was not
able
to "compile" or "find" the Start.tml. Usually, when it found a
compilation
problem, the error message explicitely explain where is the line in the
template, but in my case, I have only a stack trace.
When I see the Snapshot for the typicall project, there is something
else as
Project tree, and I don't want to follow the architecture. Having the
webroot folder in the src/main and the java in the src/main/java is not
logic for me.
A web application is not defined like that usually, why to change the
way?
But this is another subject...
--
Joachim Van der Auwera
PROGS bvba, progs.be, blog.progs.be
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]