Foros del Web » Programación para mayores de 30 ;) » Java »

Error al procesar el request en Duke's Bank

Estas en el tema de Error al procesar el request en Duke's Bank en el foro de Java en Foros del Web. Hola, Les cuento. La aplicación tiene un controlador (servlet) llamado Dispatcher. Recibe las peticiones y despues de procesarlas las devuelve a una palntilla (template.jsp). Esta ...
  #1 (permalink)  
Antiguo 08/01/2009, 01:10
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Error al procesar el request en Duke's Bank

Hola,

Les cuento. La aplicación tiene un controlador (servlet) llamado Dispatcher. Recibe las peticiones y despues de procesarlas las devuelve a una palntilla (template.jsp). Esta plantilla es genérica de manera que sea cual sea la petición, por medio de Tags Libraries y un archivo y JavaBeans asociados a la petión esta es traducida en el correspondiente HTML. El código es como sigue:

Dispatcher.-

package com.sun.ebank.web;

import javax.servlet.http.*;
import com.sun.ebank.util.Debug;
import java.util.*;
import java.math.BigDecimal;


public class Dispatcher extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
ResourceBundle messages =
(ResourceBundle) session.getAttribute("messages");

if (messages == null) {
Locale locale = request.getLocale();
Debug.print(locale.getDisplayName());
messages = ResourceBundle.getBundle("com.sun.ebank.web.WebMes sages", locale);

if (messages == null) {
Debug.print("Didn't locate resource bundle.");
}

session.setAttribute("messages", messages);
}

BeanManager beanManager =
(BeanManager) session.getAttribute("beanManager");

if (beanManager == null) {
Debug.print("Creating bean manager.");
beanManager = new BeanManager();
session.setAttribute("beanManager", beanManager);
}

String selectedScreen = request.getServletPath();
Debug.print(selectedScreen);

CustomerBean customerBean = new CustomerBean();
customerBean.setBeanManager(beanManager);
request.setAttribute("customerBean", customerBean);

if (selectedScreen.equals("/accountHist")) {
AccountHistoryBean accountHistoryBean = new AccountHistoryBean();
request.setAttribute("accountHistoryBean", accountHistoryBean);

try {
accountHistoryBean.setBeanManager(beanManager);
accountHistoryBean.setCustomerBean(customerBean);
accountHistoryBean.setAccountId(request.getParamet er(
"accountId"));
accountHistoryBean.setSortOption(Integer.parseInt(
request.getParameter("sortOption")));
accountHistoryBean.setActivityView(Integer.parseIn t(
request.getParameter("activityView")));
accountHistoryBean.setYear(Integer.parseInt(
request.getParameter("year")));
accountHistoryBean.setDate(Integer.parseInt(
request.getParameter("date")));
accountHistoryBean.setSinceDay(Integer.parseInt(
request.getParameter("sinceDay")));
accountHistoryBean.setSinceMonth(Integer.parseInt(
request.getParameter("sinceMonth")));
accountHistoryBean.setBeginDay(Integer.parseInt(
request.getParameter("beginDay")));
accountHistoryBean.setBeginMonth(Integer.parseInt(
request.getParameter("beginMonth")));
accountHistoryBean.setEndDay(Integer.parseInt(
request.getParameter("endDay")));
accountHistoryBean.setEndMonth(Integer.parseInt(
request.getParameter("endMonth")));
} catch (NumberFormatException e) {
// Not possible
}

accountHistoryBean.doTx();
} else if (selectedScreen.equals("/transferAck")) {
String fromAccountId = request.getParameter("fromAccountId");
String toAccountId = request.getParameter("toAccountId");

if ((fromAccountId == null) || (toAccountId == null)) {
request.setAttribute("errorMessage",
messages.getString("AccountError"));

try {
request.getRequestDispatcher("/error.jsp")
.forward(request, response);
} catch (Exception ex) {
}
} else {
TransferBean transferBean = new TransferBean();
request.setAttribute("transferBean", transferBean);

try {
transferBean.setMessages(messages);
transferBean.setBeanManager(beanManager);
transferBean.setFromAccountId(fromAccountId);
transferBean.setToAccountId(toAccountId);
transferBean.setTransferAmount((new BigDecimal(
request.getParameter("transferAmount"))).setScale( 2));

String errorMessage = transferBean.doTx();

if (errorMessage != null) {
request.setAttribute("errorMessage", errorMessage);

try {
request.getRequestDispatcher("/error.jsp")
.forward(request, response);
} catch (Exception ex) {
}
}
} catch (NumberFormatException e) {
request.setAttribute("errorMessage",
messages.getString("AmountError"));

try {
request.getRequestDispatcher("/error.jsp")
.forward(request, response);
} catch (Exception ex) {
}
}
}
} else if (selectedScreen.equals("/atmAck")) {
ATMBean atmBean = new ATMBean();
request.setAttribute("atmBean", atmBean);

try {
customerBean.setBeanManager(beanManager);
atmBean.setMessages(messages);
atmBean.setBeanManager(beanManager);
atmBean.setCustomerBean(customerBean);
atmBean.setAccountId(request.getParameter("account Id"));
atmBean.setAmount((new BigDecimal(request.getParameter("amount"))).setSca le(
2));
atmBean.setOperation(Integer.parseInt(request.getP arameter(
"operation")));

String errorMessage = atmBean.doTx();

if (errorMessage != null) {
request.setAttribute("errorMessage", errorMessage);

try {
request.getRequestDispatcher("/error.jsp")
.forward(request, response);
} catch (Exception ex) {
}
}
} catch (NumberFormatException e) {
request.setAttribute("errorMessage",
messages.getString("AmountError"));

try {
request.getRequestDispatcher("/error.jsp")
.forward(request, response);
} catch (Exception ex) {
}
}
}

try {
Debug.print("Forwarding to template.");
request.getRequestDispatcher("/template/template.jsp")
.forward(request, response);
} catch (Exception ex) {
ex.printStackTrace();
}
}

public void doPost(HttpServletRequest request, HttpServletResponse response) {
String selectedScreen = request.getServletPath();
Debug.print(selectedScreen);

request.setAttribute("selectedScreen", selectedScreen);

try {
request.getRequestDispatcher("/template/template.jsp")
.forward(request, response);
} catch (Exception ex) {
}
}
}

template.jsp .-

<%@ taglib uri="/WEB-INF/tlds/tutorial-template.tld" prefix="tt" %>
<%@ page errorPage="/template/errorpage.jsp" %>
<%@ include file="/template/screendefinitions.jspf" %>
<html>
<head>
<title>
<tt:insert definition="bank" parameter="title"/>
</title>
</head>
<body bgcolor="#ffffff">
<tt:insert definition="bank" parameter="banner"/>
<tt:insert definition="bank" parameter="links"/>
<tt:insert definition="bank" parameter="body"/>
</body>
</html>

aquí le paso las taglib en la primera línea y "/template/screendefinitions.jspf" en la tercera línea sería (lo paso en el siguiente post y les cuento)
  #2 (permalink)  
Antiguo 08/01/2009, 01:13
 
Fecha de Ingreso: mayo-2008
Ubicación: Madrid capital, España
Mensajes: 11
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Error al procesar el request en Duke's Bank

<tt:definition name="bank" screen="${requestScope['javax.servlet.forward.servlet_path']}">
<tt:screen screenId="/main">
<tt:parameter name="title" value="Duke's Bank" direct="true"/>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/main.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/transferAck">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleTransferSucceeded"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/transferAck.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/transferFunds">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleTransferFunds"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/transferFunds.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/atmAck">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleWDSucceeded"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/atmAck.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/atm">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleWD"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/atm.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/accountHist">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleAccountHistory"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/accountHist.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/accountList">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleAccountList"/>
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/links.jsp" direct="false"/>
<tt:parameter name="body" value="/accountList.jsp" direct="false"/>
</tt:screen>
<tt:screen screenId="/logoff">
<tt:parameter name="title" direct="true">
<jsp:attribute name="value" >
<fmt:message key="TitleLogoff" />
</jsp:attribute>
</tt:parameter>
<tt:parameter name="banner" value="/template/banner.jsp" direct="false"/>
<tt:parameter name="links" value="/template/nolinks.jsp" direct="false"/>
<tt:parameter name="body" value="/logoff.jsp" direct="false"/>
</tt:screen>
</tt:definition>

que transforma la petición: el "banner", el "links" y el "body" segun el screenId pasado en la petición.

Pero en las taglib no me coge el screen de la primera línea,
screen="${requestScope['javax.servlet.forward.servlet_path']}"

Lo coge como el mismo literal "${requestScope['javax.servlet.forward.servlet_path']}"

Saben por que?

Un saludo y Feliz Año Nuevo,
José Álvarez de Lara
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.