| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/06/2007 16:42:29
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Estou desenvolvendo uma aplicação onde todos os meus JSPs estão dentro da pasta WEB-INF/jsp, o Sérgio brilhantemente implementou o setViewDir ApplicationManager e estão devemos fazer assim:
setViewDir("/WEB-INF/jsp/")
E se estivermos usando TEMPLATE temos que setar lá tb... até ai blzzz
Então no nosso TemplateManager temos que fazer isso:
Code:
page = new Page("[WEB-INF/jsp/system/].*", "WEB-INF/jsp/template/template.jsp", ConventionController.class);
page.setBlock("header", new Page("WEB-INF/jsp/template/header.jsp"));
page.setBlock("menu", new Page("WEB-INF/jsp/template/menu.jsp"));
page.setBlock("footer", new Page("WEB-INF/jsp/template/footer.jsp"));
add(page);
Se rodarmos uma action com uma consequencia igual abaixo por exemplo:
.on(PaisAction.LIST, fwd("system/pais/main.page"));
Seria o mesmo que:
setViewDir("/WEB-INF/jsp/") + system/pais/main.page ou seja
/WEB-INF/jsp/system/pais/main.page
Então quando tudo parece uma briza leve vem um vendaval... :o)
Digamos que no eu chame a página direto ou por um link, ai temos o problema. (http://servidor:8080/sistema/system/pais/form.page)
O ConventionController não consegue encontrar as página pois o mesmo vai procurar em /system/etc.... e o correto era procurar
/WEB-INF/jsp/system/....
Dando uma olhada na implementação do ConventionController reparei que o mesmo NÃO utiliza o setViewDir para saber onde estão as páginas, ele simplesmente faz isso:
String view = getRoot() + page.getPath() + getExtension() que seria esta saida:
/system/pais/form.jsp
O que tem q ser feito é fazer com que o ConventionController receba o setViewDir.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 10:05:46
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Resolvi o problema implementando um if (negrito) no codigo fonte do ConventionControler segue abaixo:
public class ConventionController implements PageController {
public void processPage(Page page, HttpServletRequest request,
HttpServletResponse response, ServletContext application) {
String view = getRoot() + page.getPath() + getExtension();
if (view.indexOf( ApplicationManager.getViewDir() )<0){
view = ApplicationManager.getViewDir() + view;
}
File file = new File(application.getRealPath("/") + view);
if (!file.exists()) {
try {
request.getRequestDispatcher(view).forward(request, response);
return;
} catch (Exception e) {
throw new TemplateException(e);
}
}
page.setBlock(getPrincipalBlock(), new Page(view));
}
/**
* Pode ser estendido e redefinido. Por exemplo, se voce quiser que todas as
* paginas fiquem dentro de WEB-INF/views, eh so redefinir este metodo.
*
* @return Diretorio raiz das paginas
*/
public String getRoot() {
return "";
}
/**
* Por default, vale "body". Ou seja, ele vai considerar que este eh o bloco
* principal, o corpo, o conteudo da pagina. Pode ser redefinido.
*
* @return Nome do bloco que contera o corpo da pagina
*/
public String getPrincipalBlock() {
return "body";
}
/**
* Por default retorna .jsp. Este metodo existe para o caso de ser criado suporte
* a Freemarker ou Velocity. Assim, a extensao deveria ser diferente.
*
* @return Extensao da pagina
*/
public String getExtension() {
return ".jsp";
}
}
Aguardo uma interação de algum desenv.
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:31:00
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Adicionei o seguinte código lá:
Code:
String viewDir = ApplicationManager.getViewDir();
if (viewDir != null && viewDir.length() > 0 && !view.startsWith(viewDir)) {
if (viewDir.endsWith("/") && view.startsWith("/")) {
viewDir = viewDir.substring(0, viewDir.length() - 1);
} else if (!viewDir.endsWith("/") && !view.startsWith("/")) {
viewDir = viewDir + "/";
}
view = viewDir + view;
}
Pega o jar beta...
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/06/2007 12:42:15
|
IceW0lf
![[Avatar]](/images/avatar/7cbbc409ec990f19c78c75bd1e06f215.jpg)
Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline
|
Yes master!!!
To baixando.
Tamos ai pra debugar o bagulho.... =D
Obrigado...
Pode falar vai... QUE CARA CHATO CREDU!
|
Leiber Wallace
Voixy ::: Soluções em Telecomunicações |
|
|
 |
|
|