1 Reply Latest reply on Oct 5, 2007 12:11 PM by Marco De Simone

    Unexpected rendering

    Marco De Simone Newbie

      Hi to all.
      This is a question arising from testing jsf 1.2_04 and JBoss 4.2.1GA.
      I don't use Seam but I don't know where post this message else.

      The question is:

      I've isolated the JBoss Jsf from my war via jboss-web.xml.

      My managed bean's method forwards this jsp:

      
      <body>
      
       <f:view>
      
      <h:form>
      
       <h:commandLink action="#{tipologicaStandardForm.modifyingPage}" value="Outside dataTable"></h:commandLink>
      
      
      
       <h:dataTable value="#{tipologicaStandardForm.elencoRecord}" var="tipologicaStandard">
      
       <h:column>
      
       <h:commandLink action="#{tipologicaStandardForm.modifyingPage}" value="#{tipologicaStandard.code}"></h:commandLink>
      
       </h:column>
      
       <h:column>
      
       <h:commandLink action="#{tipologicaStandardForm.modifyingPage}"><h:outputText value="#{tipologicaStandard.description}"/> </h:commandLink>
      
       </h:column>
      
       </h:dataTable>
      
      
       <h:commandButton value="#{messagesBundle.insert}" action="#{tipologicaStandardForm.modifyingPage}"></h:commandButton>
      
      </h:form>
      
       </f:view>
      
      </body>
      
      



      You can read that there are three <h:commandLink action="#{tipologicaStandardForm.modifyingPage}"... one outside datatable, the other two inside.
      The datatable works correctly but, only the first link goes to server and call the "modifyingPage" method.
      The others are rendered as simple anchor.

      Is this a recognized bug?
      Must I configure Jboss in some way?

      Thanks in advance.

        • 1. Re: Unexpected rendering
          Marco De Simone Newbie

          I must correct my previous post. Both link goes to server.

          I post the jsp code translated for the two <h:commandLink> (inside and outside <h:dataTable>)
          i wolud understand, before all, if it's a bad translation by Jboss or a bad submit by jsf library

          These are the two commandlink methods:

          This is outside datatable

          
          
          private boolean _jspx_meth_h_005fcommandLink_005f0(javax.servlet.jsp.tagext.JspTag _jspx_th_h_005fform_005f0, PageContext _jspx_page_context)
           throws Throwable {
           PageContext pageContext = _jspx_page_context;
           JspWriter out = _jspx_page_context.getOut();
           // h:commandLink
           com.sun.faces.taglib.html_basic.CommandLinkTag _jspx_th_h_005fcommandLink_005f0 = new com.sun.faces.taglib.html_basic.CommandLinkTag();
           org.apache.jasper.runtime.AnnotationHelper.postConstruct(_jsp_annotationprocessor, _jspx_th_h_005fcommandLink_005f0);
           _jspx_th_h_005fcommandLink_005f0.setPageContext(_jspx_page_context);
           _jspx_th_h_005fcommandLink_005f0.setParent((javax.servlet.jsp.tagext.Tag) _jspx_th_h_005fform_005f0);
           // /jsp/content/test/testLista.jsp(23,3) name = action type = javax.el.MethodExpression reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = true methodSignature = java.lang.Object action()
           _jspx_th_h_005fcommandLink_005f0.setAction(new org.apache.jasper.el.JspMethodExpression("/jsp/content/test/testLista.jsp(23,3) '#{tipologicaStandardForm.modifyingPage}'",_el_expressionfactory.createMethodExpression(_jspx_page_context.getELContext(),"#{tipologicaStandardForm.modyfingPage}",java.lang.Object.class,new Class[] {})));
           // /jsp/content/test/testLista.jsp(23,3) name = value type = javax.el.ValueExpression reqTime = false required = false fragment = false deferredValue = true expectedTypeName = java.lang.Object deferredMethod = false methodSignature = null
           _jspx_th_h_005fcommandLink_005f0.setValue(new org.apache.jasper.el.JspValueExpression("/jsp/content/test/testLista.jsp(23,3) 'Fuori dalla tabella'",_el_expressionfactory.createValueExpression("Outside dataTable",java.lang.Object.class)));
           _jspx_th_h_005fcommandLink_005f0.setJspId("jsp_37219136_2");
           int _jspx_eval_h_005fcommandLink_005f0 = _jspx_th_h_005fcommandLink_005f0.doStartTag();
           if (_jspx_eval_h_005fcommandLink_005f0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
           if (_jspx_eval_h_005fcommandLink_005f0 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
           out = _jspx_page_context.pushBody();
           _jspx_th_h_005fcommandLink_005f0.setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);
           _jspx_th_h_005fcommandLink_005f0.doInitBody();
           }
           do {
           out.write("\r\n");
           out.write("\r\n");
           out.write("\t\t\t");
           int evalDoAfterBody = _jspx_th_h_005fcommandLink_005f0.doAfterBody();
           if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
           break;
           } while (true);
           if (_jspx_eval_h_005fcommandLink_005f0 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
           out = _jspx_page_context.popBody();
           }
           }
           if (_jspx_th_h_005fcommandLink_005f0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
           _jspx_th_h_005fcommandLink_005f0.release();
           org.apache.jasper.runtime.AnnotationHelper.preDestroy(_jsp_annotationprocessor, _jspx_th_h_005fcommandLink_005f0);
           return true;
           }
           _005fjspx_005ftagPool_005fh_005fcommandLink_005fvalue_005faction.reuse(_jspx_th_h_005fcommandLink_005f0);
           return false;
           }
          
          
          



          This is inside datatable

          
          private boolean _jspx_meth_h_005fcommandLink_005f1(javax.servlet.jsp.tagext.JspTag _jspx_th_h_005fcolumn_005f0, PageContext _jspx_page_context)
           throws Throwable {
           PageContext pageContext = _jspx_page_context;
           JspWriter out = _jspx_page_context.getOut();
           // h:commandLink
           com.sun.faces.taglib.html_basic.CommandLinkTag _jspx_th_h_005fcommandLink_005f1 = new com.sun.faces.taglib.html_basic.CommandLinkTag();
           org.apache.jasper.runtime.AnnotationHelper.postConstruct(_jsp_annotationprocessor, _jspx_th_h_005fcommandLink_005f1);
           _jspx_th_h_005fcommandLink_005f1.setPageContext(_jspx_page_context);
           _jspx_th_h_005fcommandLink_005f1.setParent((javax.servlet.jsp.tagext.Tag) _jspx_th_h_005fcolumn_005f0);
           // /jsp/content/test/testLista.jsp(45,3) name = action type = javax.el.MethodExpression reqTime = false required = false fragment = false deferredValue = false expectedTypeName = null deferredMethod = true methodSignature = java.lang.Object action()
           _jspx_th_h_005fcommandLink_005f1.setAction(new org.apache.jasper.el.JspMethodExpression("/jsp/content/test/testLista.jsp(45,3) '#{tipologicaStandardForm.modifyingPage}'",_el_expressionfactory.createMethodExpression(_jspx_page_context.getELContext(),"#{tipologicaStandardForm.modifyingPage}",java.lang.Object.class,new Class[] {})));
           // /jsp/content/test/testLista.jsp(45,3) name = value type = javax.el.ValueExpression reqTime = false required = false fragment = false deferredValue = true expectedTypeName = java.lang.Object deferredMethod = false methodSignature = null
           _jspx_th_h_005fcommandLink_005f1.setValue(new org.apache.jasper.el.JspValueExpression("/jsp/content/test/testLista.jsp(45,3) '#{tipologicaStandard.codice}'",_el_expressionfactory.createValueExpression(_jspx_page_context.getELContext(),"#{tipologicaStandard.codice}",java.lang.Object.class)));
           _jspx_th_h_005fcommandLink_005f1.setJspId("jsp_37219136_5");
           int _jspx_eval_h_005fcommandLink_005f1 = _jspx_th_h_005fcommandLink_005f1.doStartTag();
           if (_jspx_eval_h_005fcommandLink_005f1 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
           if (_jspx_eval_h_005fcommandLink_005f1 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
           out = _jspx_page_context.pushBody();
           _jspx_th_h_005fcommandLink_005f1.setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);
           _jspx_th_h_005fcommandLink_005f1.doInitBody();
           }
           do {
           out.write("\r\n");
           out.write("\r\n");
           out.write("\t\t\t");
           int evalDoAfterBody = _jspx_th_h_005fcommandLink_005f1.doAfterBody();
           if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
           break;
           } while (true);
           if (_jspx_eval_h_005fcommandLink_005f1 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
           out = _jspx_page_context.popBody();
           }
           }
           if (_jspx_th_h_005fcommandLink_005f1.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
           _jspx_th_h_005fcommandLink_005f1.release();
           org.apache.jasper.runtime.AnnotationHelper.preDestroy(_jsp_annotationprocessor, _jspx_th_h_005fcommandLink_005f1);
           return true;
           }
           _005fjspx_005ftagPool_005fh_005fcommandLink_005fvalue_005faction.reuse(_jspx_th_h_005fcommandLink_005f1);
           return false;
           }
          }
          
          


          Finally, this is the generated html


          
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
          <title>Insert title here</title>
          
          </head>
          
          
          <body>
          
          
          <form id="j_id_jsp_37219136_1" name="j_id_jsp_37219136_1" method="post" action="/croute/faces/jsp/content/test/testLista.jsp" enctype="application/x-www-form-urlencoded">
          <input type="hidden" name="j_id_jsp_37219136_1" value="j_id_jsp_37219136_1" />
          
          <script type="text/javascript" language="Javascript">
          function dpf(f) {
          var adp = f.adp;
          if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp);}}};function apf(f, pvp) {var adp = new Array();f.adp = adp;var ps = pvp.split(',');for (var i = 0,ii = 0;i < ps.length;i++,ii++) {var p = document.createElement("input");p.type = "hidden";p.name = ps;p.value = ps[i + 1];f.appendChild(p);adp[ii] = p;i += 1;}};function jsfcljs(f, pvp, t) {apf(f, pvp);if (t) {f.target = t;}f.submit();dpf(f);};</script>
          <a href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.forms['j_id_jsp_37219136_1'],'j_id_jsp_37219136_1:j_id_jsp_37219136_2,j_id_jsp_37219136_1:j_id_jsp_37219136_2','');}return false">Outside table</a><table>
          <tbody>
          <tr>
          <td><a href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.forms['j_id_jsp_37219136_1'],'j_id_jsp_37219136_1:j_id_jsp_37219136_3:0:j_id_jsp_37219136_5,j_id_jsp_37219136_1:j_id_jsp_37219136_3:0:j_id_jsp_37219136_5','');}return false">cod1</a></td>
          </tr>
          </tbody>
          </table>
          <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id3" />
          
          </form>
          
          
          
          </body>
          </html>
          
          


          As you can see, the only difference is:

          jsfcljs(document.forms['X_1'],'X_1:X_2,X_1:X_2','')

          jsfcljs(document.forms['X_1'],X_1:X_3:0:X_5,X_1:X_3:0:X_5','');

          where X=j_id_jsp_37219136