Tips in JSF
#1 To use redirect in jsf: This is used when you want to show the url in browser ( http://localhost:7001/test.jsp )
<navigation-rule>
<navigation-case>
<from-outcome>test</from-outcome>
<to-view-id>/test.jsp</to-view-id>
<redirect></redirect>
</navigation-case>
</navigation-rule>
#2 To use Tiles in JSF:
<application>
<view-handler>org.apache.myfaces.application.jsp.JspTilesViewHandlerImpl</view-handler>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<message-bundle>ApplicationMessages</message-bundle> <!-- this is resource bundle -- >
</application>
#3 To get instance of another bean in the container:
TestBean testBean = (TestBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("beanId");
if (null == testBean) // if instance is null then use this
{
FacesContext context = FacesContext.getCurrentInstance();
myBean2 = (TestBean)context.getApplication().createValueBinding("#{"beanId"}").getValue(context);
}
#4 To add messages to the faces context:
FacesContext facesContext = FacesContext.getCurrentInstance();
String text = FacesMessages.getMessageResourceString(FacesContext.getCurrentInstance().getApplication().getMessageBundle(),
errorNumber,null,FacesContext.getCurrentInstance().getViewRoot().getLocale());
facesContext.addMessage(null,new FacesMessage(FacesMessage.SEVERITY_ERROR,null,text));
#5 To display error messages:
<h:messages errorClass="error" infoClass="info" warnClass="warn"
fatalClass="fatal" showDetail="true" warnStyle="color: red" infoStyle="color: blue" errorStyle="color: red"/>
#6 To display error message for a particular component:
<h:message for="username"/>
#7 To create a custom validator:
Add the validator attribute on the inputText tag:
<h:inputText value="#{userBean.userName}" validator="#{userBean.validateUser} id="userName" required="true"/>
public void checkUser(FacesContext context, UIComponent component, Object value) throws ValidatorException {
// make sure to call component.setValid(false)
}
#8 To display each error messages in new line.
<h:messages styleClass="messages" id="messageId" layout="table" /> , the other value for layout is "list".
#9