[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