3

@ManagedBean の @PostConstruct メソッドにパラメーターを渡す際に少し問題があります。私はそれがそのようにできないことをすでに知っていますが、どのようにそれを行うことができるかも知りません。

いくつかのコードから始めましょう:

    <h:form>
                <h:dataTable value="#{accountsList.accountsList}" var="konto">
                    <h:column>
                        <f:facet name="header">#{messages.id}</f:facet>
                        #{konto.id}
                    </h:column>
                    <h:column>
                        <f:facet name="header">#{messages.login}</f:facet>
                        <h:commandLink value="#{konto.login}" action="#{profileViewer.showProfile()}" />
                    </h:column>
                    .........
                </h:dataTable>
    </h:form>

上記の xhtml は、アカウント リストを表示するために使用されます。

コマンドリンクを見てください。その値 (ユーザーのログイン) をパラメーターとして、ProfileViewer Bean の PostConstruct メソッドであるアクション メソッドに渡したいと思います。

ProfileViewer Bean コードは次のとおりです。

@ManagedBean
@RequestScoped
public class ProfileViewer {

@EJB
private MokEndpointLocal mokEndpoint;

private Konta konto;

private String login;

@PostConstruct
public String showProfile(){
    konto = mokEndpoint.getAccountByLogin(login);
    return "profile";
}

public Konta getKonto() {
    return konto;
}

public void setKonto(Konta konto) {
    this.konto = konto;
}

public String getLogin() {
    return login;
}

public void setLogin(String login) {
    this.login = login;
}

public ProfileViewer() {
}
}

これどうやってするの?私を助けてください!簡単で良い解決策といくつかのコードで答えていただければ幸いです。

わかりました、このように言いましょう: アカウントのリストを表示する JSF ページがあります。各アカウント名 (ログイン) をプロファイル情報 (選択したアカウントに関する情報を表示する他の jsf ページ) へのリンクにしたい

4

1 に答える 1

2

@PostConstructメソッドでビュー パラメーターを操作しないでください。これはコンストラクターの直後に呼び出されており、JSF には確立された値がありません。それとは別に、アクション メソッドから注釈を削除する必要があり@PostConstructます。その後、次のように複数の方法でユーザー ログイン値を渡すことができますh:commandLink

http://www.mkyong.com/jsf2/4-ways-to-pass-parameter-from-jsf-page-to-backing-bean/

  • #{profileViewer.showProfile(ログイン)}
  • f:param name="user" value="login"
  • f:属性名="ユーザー" 値="ログイン"
  • f:setPropertyActionListener target="#{profileViewer.showProfile}" value="login"

を宣言する場合は注意してください#{profileViewer.showProfile(login)}。一部のサーバーでは問題が発生する可能性があります。

http://www.mkyong.com/jsf2/how-to-pass-parameters-in-method-expression-jsf-2-0/

于 2013-01-05T02:11:08.393 に答える