jsf – 使用请求参数打开详细信息视图

我使用myfaces和richfaces创建了一个简单的主/细节.通过单击rich:dataTable中的h:commandLink,用户可以打开详细信息视图并编辑实体.

现在我想创建一个允许用户直接打开详细视图的URL.通常我会通过创建像/detail.jsp?id=12这样的URL来实现这个目标 – 如何使用JSF实现这一目标?

最佳答案 您可以使用链接控件上的参数构造URL:

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

在目标页面上,您可以直接使用表达式语言或通过托管bean从参数映射中读取id.

视图:

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

豆:

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声明:

<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>
点赞