1

get request、parameters、ajaxrequestsをJSFと一緒に使用する一般的な方法は何ですか?

私が達成したいのは、idパラメーターをJSFページに渡し、指定されたパラメーターを持つエンティティーをデータベースから取得して、そのエンティティーをJSFページに表示することです。次に、エンティティにいくつかの変更を加えて、データベースにデータを戻します(ajax経由)。

変更をデータベースに戻すステップに固執しました。これが私がこれまでに持っているものです:

非常に単純なJSFページとコントローラー(ManagedBean)があります。

JSFページ

<h:body>
    <h:form id="myForm">
        <p:messages />
        <h:panelGrid columns="3">
            <h:outputLabel value="#{requestController.id}" />
            <p:commandButton value="Update" action="#{requestController.updateEntity}" update="myForm" />
        </h:panelGrid>
    </h:form>
</h:body>

コントローラ

@Component("requestController")
@Scope("request")
public class RequestController {

@Value("#{request.getParameter('id')}")
private String id;

private String entity;

@PostConstruct
public void init() {
    if(id == null || id.equals("")) {
        entity = "Entity not found";
    }
    else if("1".equals(id)) {
        entity = "FirstEntity";
    }
    else {
        entity = "SecondEntity";
    }
}

public String getEntity() {
    return entity;
}

public void updateEntity() {
    entity += "_updated";
}

public String getId() {
    return id;
}
}

idパラメータを使用してJSFページを開くと、エンティティが正しく表示されます。しかし、更新ボタンをクリックすると、コントローラーが新たにインスタンス化され、idパラメーターがなくなります。

JSFでajaxリクエストと一緒にリクエストパラメータを処理する一般的な方法は何ですか?

4

1 に答える 1

2

解決策は、ページ内のすべてのリクエストにリクエストパラメータを追加することです。<f:param>これはタグを使用して実行できます。

したがって、上記のコードを機能させるには、コマンドボタンに初期リクエストパラメータを含める必要があります。

<p:commandButton value="Update" action="#{requestController.updateEntity}" update="myForm" >
    <f:param name="id" value="#{requestController.id}" />
</p:commandButton>
于 2012-08-15T10:17:06.020 に答える