views:

625

answers:

3

I created a simple master/detail using myfaces and richfaces. By clicking a h:commandLink in the rich:dataTable the user is able to open the detail view and edit the entity.

Now I want to create a URL that allows the user to open the detail view directly. Normally I would to this by creating an URL like /detail.jsp?id=12 - how can I achieve that with JSF?

+2  A: 

You can construct the URL using parameters on a link control:

 <h:outputLink value="reqscope.faces">
  <f:param name="id" value="#{row.id}" />
  <h:outputText value="link" />
 </h:outputLink>

On the target page, you can read the id from the parameter map, either directly using the expression language or via a managed bean.

View:

<f:view>
 id= <h:outputText value="#{param['id']}" />
 <br />
 id= <h:outputText value="#{lookupBean.id}" />
</f:view>

Bean:

public class LookupBean implements Serializable {

    public String getId() {
     FacesContext context = FacesContext.getCurrentInstance();
     ExternalContext extContext = context.getExternalContext();
     Map<String, String> params = extContext.getRequestParameterMap();
     return params.get("id");
    }

}

faces-config.xml declaration:

<managed-bean>
 <managed-bean-name>lookupBean</managed-bean-name>
 <managed-bean-class>reqscope.LookupBean</managed-bean-class>
 <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
McDowell
A: 

I use an a4j:commandlink to first pass the id of the entity I want to show details for to the detail view bean. And then I simply use document.location to navigate to the view.

<a4j:commandLink action="#{detailviewBean.setDetailID(entity.someid)}" value="#{entity.someid}" oncomplete="document.location='/app/detailview.seam'"/>
anders.norgaard
A: 

If you are using JSF 1.2, you can use f:setPropertyActionListener:

<h:commandLink action="#{reqscope.faces}">
    <h:outputText value="link"/>
    <f:setPropertyActionListener 
        value="#{id}" 
        target="#{lookupBean.id}"/>
</h:commandLink>

Executing Methods From LinkButton Parameters