문제

MyFaces와 Richfaces를 사용하여 간단한 마스터/디테일을 만들었습니다. AH : Rich : DataTable에서 AH : 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>

다른 팁

A4J : CommandLink를 사용하여 먼저 세부 사항 뷰 Bean에 세부 사항을 표시하려는 엔티티의 ID를 전달합니다. 그런 다음 단순히 word.location을 사용하여보기로 이동합니다.

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

JSF 1.2를 사용하는 경우 f : setPropertyactionListener :

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

LinkButton 매개 변수에서 메소드를 실행합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top