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 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user