Difference between revisions of "Best Practice/JSF useful tipps etc"

From MPDLMediaWiki
Jump to navigation Jump to search
m
Line 5: Line 5:


==HTML behavior==
==HTML behavior==
**if you use HTML-Tags that immediately close after there opened (i.e. <span class="something"></span> or <b></b>) it might be, that JSF reorders the closing tags to the end of the wrapping section for no good reason. So
<nowiki>
<div>
  <span class="something"></span>
  <a href="some url">click</a>
  <span class="something"></span>
  </span><a href="some url">click</a>
  <span class="something"></span>
</div>
</nowiki>
might lead to
<nowiki>
<div>
  <span class="something">
  <a href="some url">click</a>
  <span class="something">
  </span><a href="some url">click</a>
  <span class="something"></span></span>
</div>
</nowiki>
You can avoid that by using active jsf components like <h:panelGroup styleClass="something" /> or <h:outputText styleClass="something" />


==Trinidad components==
==Trinidad components==

Revision as of 08:15, 11 November 2008

Best practice tipps for JSF and related components[edit]

JSF general[edit]

HTML behavior[edit]

    • if you use HTML-Tags that immediately close after there opened (i.e. or ) it might be, that JSF reorders the closing tags to the end of the wrapping section for no good reason. So

<div> <span class="something"></span> <a href="some url">click</a> <span class="something"></span> </span><a href="some url">click</a> <span class="something"></span> </div>

might lead to

<div> <span class="something"> <a href="some url">click</a> <span class="something"> </span><a href="some url">click</a> <span class="something"></span></span> </div>

You can avoid that by using active jsf components like <h:panelGroup styleClass="something" /> or <h:outputText styleClass="something" />

Trinidad components[edit]

    • Trinidad iterator <tr:iterator>
      • you can use html components for output i.e. <h:outputText>
      • you can use html components for text input i.e. <h:inputText>
      • you should avoid html components for triggering actions in the iterator like add / remove elements. If you notice strange behaviour when performing actions (i.e. ArrayOutOfBoundsExceptions) look for non-Trinidad components in the iterator first
      • The first element in a trinidad iterator may not be a simple html element like
        . You will have to use "active" components instead like <h:panelgroup layout="block">. This will generate a
        element.
      • if you need the index of the current iterator row you can add the tag "varstatus". Example: <tr:iterator var="component" id="fileUploads" value="#{EasySubmission.files}" binding="#{EasySubmission.fileIterator}" varStatus="index">. Then you can get the current row index by querying like this: <h:outputText value="#{EasySubmission.fileIterator.rowIndex}" />. NOTE: you will have to create a binding with the related baccking bean in the iterator (binding="#{EasySubmission.fileIterator}"). For this you have to add the following to the backing bean: private UIXIterator fileIterator = new UIXIterator(); Don't forget to gererate getters and setters!!! This binding is necessary for the component in the jsp page to get a row index.