открыть подробный вид с параметром запроса

Я создал простой мастер/деталь, используя myfaces и richfaces. Щелкнув ссылку h:commandLink в rich:dataTable, пользователь может открыть подробное представление и отредактировать сущность.

Теперь я хочу создать URL-адрес, который позволяет пользователю напрямую открывать подробный вид. Обычно я бы сделал это, создав URL-адрес, например /detail.jsp?id=12 - как я могу добиться этого с помощью JSF?


person Thomas Einwaller    schedule 16.01.2009    source источник


Ответы (3)


Вы можете создать URL-адрес, используя параметры элемента управления ссылкой:

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

На целевой странице вы можете прочитать идентификатор из карты параметров либо напрямую, используя язык выражений, либо через управляемый компонент.

Вид:

<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>
person McDowell    schedule 17.01.2009

Я использую a4j:commandlink, чтобы сначала передать идентификатор объекта, для которого я хочу показать подробности, в bean-компонент представления сведений. А затем я просто использую document.location для перехода к представлению.

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

Если вы используете JSF 1.2, вы можете использовать f:setPropertyActionListener:

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

Выполнение методов из параметров LinkButton

person hkn    schedule 26.02.2009