[jboss-user] [Beginners Corner] - Re: jboss-dukes-bank app

pepelara do-not-reply at jboss.com
Tue Jan 13 15:29:21 EST 2009


Going on with the Duke’s Bank, I have made some changes in then code. I am trying it because learning. But now appears an exception that is,

Unable find setter method for paramName attribute

Then code is as follow,


  | public class Definition {
  |     private HashMap params = new HashMap();
  | 
  |     public void setParam(Parameter p) {
  |         params.put(p.getParamName(), p);
  |     }
  | 
  |     public Parameter getParam(String name) {
  |         return (Parameter) params.get(name);
  |     }
  | }
  | 


  | public class Parameter {
  |     private String paramName;
  |     private boolean direct;
  |     private String paramValue;
  | 
  |     public Parameter(String name, String value, boolean isDirect) {
  |         this.paramName = name;
  |         this.direct = isDirect;
  |         this.paramValue = value;
  |     }
  | 
  |     public String getParamName() {
  |         return paramName;
  |     }
  | 
  |     public boolean getIsDirect() {
  |         return direct;
  |     }
  | 
  |     public String getParamValue() {
  |         return paramValue;
  |     }
  | }
  | 


  | public class DefinitionTag extends SimpleTagSupport {
  |     private String name = null;
  |     private String screen = null;
  |     private HashMap screens = null;
  | 
  |     public DefinitionTag() {
  |         super();
  |     }
  | 
  |     public HashMap getScreens() {
  |         return screens;
  |     }
  | 
  |     public void setName(String name) {
  |         this.name = name;
  |     }
  | 
  |     public void setScreen(String screenId) {
  |         this.screen = screenId;
  |     }
  | 
  |     public void doTag() {
  |         try {
  |             screens = new HashMap();
  | 
  |             getJspBody()
  |                 .invoke(null);
  | 
  |             Definition myDefinition = new Definition();
  |             PageContext context = (PageContext) getJspContext();
  |             ArrayList params = (ArrayList) screens.get(screen);
  |             Iterator ir = null;
  | 
  |             if (params != null) {
  |                 ir = params.iterator();
  | 
  |                 while (ir.hasNext())
  |                     myDefinition.setParam((Parameter) ir.next());
  | 
  |                 // put the definition in the page context
  |                 context.setAttribute(name, myDefinition,
  |                     context.APPLICATION_SCOPE);
  |             } else {
  |                 Debug.println("DefinitionTag: params are not defined.");
  |             }
  |         } catch (Exception ex) {
  |             ex.printStackTrace();
  |         }
  |     }
  | }
  | 


  | public class ParameterTag extends SimpleTagSupport {
  |     private String paramName = null;
  |     private String paramValue = null;
  |     private String direct = null;
  | 
  |     public ParameterTag() {
  |         super();
  |     }
  | 
  |     public void setParamName(String paramName) {
  |         this.paramName = paramName;
  |     }
  | 
  |     public void setParamValue(String paramValue) {
  |         this.paramValue = paramValue;
  |     }
  | 
  |     public void setDirect(String isDirectString) {
  |         this.direct = isDirectString;
  |     }
  | 
  |     public void doTag() {
  |         boolean isDirect = false;
  | 
  |         if ((direct != null) &&
  |                 direct.toLowerCase()
  |                                   .equals("true")) {
  |             isDirect = true;
  |         }
  | 
  |         try {
  |             // retrieve the parameters list
  |             if (paramName != null) {
  |                 ArrayList parameters =
  |                     ((ScreenTag) getParent()).getParameters();
  | 
  |                 if (parameters != null) {
  |                     Parameter param =
  |                         new Parameter(paramName, paramValue, isDirect);
  |                     parameters.add(param);
  |                 } else {
  |                     Debug.println("ParameterTag: parameters do not exist.");
  |                 }
  |                 
  |             }
  |         } catch (Exception e) {
  |             Debug.println("ParameterTag: error in doTag: " + e);
  |         }
  |     }
  | }
  | 


  | public class ScreenTag extends SimpleTagSupport {
  |     private String screenId;
  |     private ArrayList parameters = null;
  | 
  |     public ScreenTag() {
  |         super();
  |     }
  | 
  |     public ArrayList getParameters() {
  |         return parameters;
  |     }
  | 
  |     public void setScreenId(String screenId) {
  |         this.screenId = screenId;
  |     }
  | 
  |     public void doTag() {
  |         parameters = new ArrayList();
  | 
  |         HashMap screens = (HashMap) ((DefinitionTag) getParent()).getScreens();
  | 
  |         if (screens != null) {
  |             try {
  |                 if (!screens.containsKey(screenId)) {
  |                     screens.put(screenId, parameters);
  |                 }
  | 
  |                 getJspBody()
  |                     .invoke(null);
  |             } catch (Exception ex) {
  |                 ex.printStackTrace();
  |             }
  |         } else {
  |             Debug.println("ScreenTag: Unable to get screens object.");
  |         }
  |     }
  | }
  | 


  | public class InsertTag extends SimpleTagSupport {
  |     private String parameter = null;
  |     private String definition = null;
  | 
  |     public InsertTag() {
  |         super();
  |     }
  | 
  |     public void setParameter(String parameter) {
  |         this.parameter = parameter;
  |     }
  | 
  |     public void setDefinition(String name) {
  |         this.definition = name;
  |     }
  | 
  |     public void doTag() throws JspTagException {
  |         Definition myDefinition = null;
  |         Parameter myParameter = null;
  |         boolean directInclude = false;
  |         
  |         PageContext context = (PageContext) getJspContext();
  | 
  |         // get the definition from the page context
  |         myDefinition =
  |             (Definition) context.getAttribute(definition,
  |                 context.APPLICATION_SCOPE);
  | 
  |         // get the parameter
  |         if ((parameter != null) && (myDefinition != null)) {
  |             myParameter = (Parameter) myDefinition.getParam(parameter);
  |         }
  | 
  |         if (myParameter != null) {
  |             directInclude = myParameter.getIsDirect();
  |         }
  | 
  |         try {
  |             // if parameter is direct, print to out
  |             if (directInclude && (myParameter != null)) {
  |                 context.getOut()
  |                        .print(myParameter.getParamValue());
  |             }
  |             // if parameter is indirect, include results of dispatching to page 
  |             else {
  |                 if ((myParameter != null) && (myParameter.getParamValue() != null)) {
  |                     context.include(myParameter.getParamValue());
  |                 }
  |             }
  |         } catch (Exception ex) {
  |             Throwable rootCause = null;
  | 
  |             if (ex instanceof ServletException) {
  |                 rootCause = ((ServletException) ex).getRootCause();
  |             }
  | 
  |             throw new JspTagException(ex.getMessage(), rootCause);
  |         }
  |     }
  | }
  | 

Another change I made was to put jsp extension to the file screendefinitions.jspf. Now is screendefinitions.jsp and is as follow,


  | <tt:mydefinition name="bank" screen='<%= (String)request.getAttribute("selectedScreen") %>'>
  |   <tt:myscreen screenId="/main">
  |     <tt:myparameter paramName="title" paramValue="Duke's Bank" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/main.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/transferAck">
  |     <tt:myparameter paramName="title" paramValue="TransferSucceeded" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/transferAck.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/transferFunds">
  |     <tt:myparameter paramName="title" paramValue="TransferFunds" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/transferFunds.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/atmAck">
  |     <tt:myparameter paramName="title" paramValue="WDSucceeded" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/atmAck.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/atm">
  |     <tt:myparameter paramName="title" paramValue="WD" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/atm.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/accountHist">
  |     <tt:myparameter paramName="title" paramValue="AccountHistory" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/accountHist.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/accountList">
  |     <tt:myparameter paramName="title" paramValue="AccountList" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/links.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/accountList.jsp" direct="false"/>
  |   </tt:myscreen>
  |   <tt:myscreen screenId="/logoff">
  |     <tt:myparameter paramName="title" paramValue="Logoff" direct="true"/>
  |     <tt:myparameter paramName="banner" paramValue="/template/banner.jsp" direct="false"/>
  |     <tt:myparameter paramName="links" paramValue="/template/nolinks.jsp" direct="false"/>
  |     <tt:myparameter paramName="body" paramValue="/logoff.jsp" direct="false"/>
  |   </tt:myscreen>
  | </tt:mydefinition>
  | 

As you can see my code does not has any line of jsp code yet. I think is the right way considering the tutorials I have been reading over there.

Please help about this exception. I think I am close to the solution.

Thanks and best regards,
Jose Alvarez de Lara

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4201515#4201515

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4201515




More information about the jboss-user mailing list