My newbie-ness is showing here but I have two questions and the book I own on JSF doesn't seem to provide the answer (or else it does and I just haven't found it).
Question 1:
Take a typical example where you have a menu of links...
View Really Cool Chart Check your account status View Some Amazing Report
When the user clicks on one of these exciting links it needs to invoke some kind of action (in the JSF world I guess this would be a backing bean) so that the proper business logic takes place in the background and you are then forwarded to the proper displaying JSP. Using Struts this was very clean since each link could map to an Action in my struts-config file.
How do I accomplish the above with JSF? Is the easiest to use commandLink and wrap each link in <h:form>..</h:form>? That seems a bit verbose but if that's the typical practice I can deal with it. Remember each link could need to access a totally different object(backing bean.) It seems awkward to have to nest each link inside of <h:form>
Question 2:
This should be simple, but I'm stumped. If I include a menu.jsp file on a page that is basically a bunch of links, how do I set up the faces config file for the from-view-id? Assuming home.jsp includes menu.jsp I can't seem to get the links to work from menu.jsp regardless if I use menu.jsp or home.jsp for the from-view-id. I even tried use the wilcard * and the menu still doesn't work (page compiles and displays links fine, but links do not result in appropriate pages being called). If I move the code out of being an include file and paste it directly into home.jsp the links work fine.
Here are the three relevant files. (using header.jsp insted of menu.jsp for this example. Also, is there a way to avoid all this f:verbatim code in the include file? It sure make sthe code difficult to read and it doesn't seem nice. I should be able to include any files - JSF seems to require me to really edit files that I want to include).
header.jsp (what gets included)
------------
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<f:verbatim>
<h1>
</f:verbatim>
<h:outputText value="#{msgs.employeeApp}"/>
<f:verbatim>
</h1>
<h:form>
<h:commandLink action="#{employeeBacking.setUpForAdd}"><h:outputText value="#{msgs.addEmployee}"/></h:commandLink>
<f:verbatim>
<div class="spacer"> </div>
</f:verbatim>
<h:commandLink action="#{employeeBacking.getEmployees}"><h:outputText value="#{msgs.viewEmployees}"/></h:commandLink>
</h:form>
</f:verbatim>
home.jsp --------- <html> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<f:view>
<head>
<f:loadBundle basename="net.reumann.messages" var="msgs"/>
<title><h:outputText value="#{msgs.employeeApp}"/></title>
<link href="main.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<f:facet name="header">
<f:subview id="header">
<c:import url="header.jsp"/>
</f:subview>
</f:facet>
</body>
</f:view>
</html>
my-faces-config ----------------
<navigation-rule>
<from-view-id>???tried several here???</from-view-id>
<navigation-case>
<from-outcome>toEmployeeForm</from-outcome>
<to-view-id>/employeeForm.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>toList</from-outcome>
<to-view-id>/employeeList.jsp</to-view-id>
</navigation-case>
</navigation-rule>

