9

Facelets からのリンクを介して 1 つのメソッドを呼び出したい:

私のFaceletsコードは次のようなものです:

<h:commandButton value="A" actionListener="#{customerData.searchedCustomerListA}" />

<h:commandLink value="A" actionListener="#{customerData.searchedCustomerListA}"/>

バッキング Bean コードは次のようになります。

public void searchedCustomerListA(ActionEvent ae){
    customerName = "A";
    leftCustomerListAvailable.clear();
    if(customerDataBean.getSearchedCustomerList(customerName)!= null)
        leftCustomerListAvailable =customerDataBean.getSearchedCustomerList("A");
}

同じコードは で機能します<h:commandButton>が、 では機能しません<h:commandLink>。これはどのように発生し、どうすれば解決できますか?

4

3 に答える 3

3

との技術的な違いは<h:commandLink><h:commandButton>リンクが JavaScript を使用して親フォームを送信することです。したがって、構文的に同等のボタンが正常に機能しているのに機能しない場合は、ブラウザーで JavaScript が無効になっているかjsf.js、必須のヘルパー関数を含むファイルがページに含まれていないことを意味するだけです (これは簡単に取得できるはずです)。ブラウザーのビルトイン開発者ツールセットの JS コンソールで JS エラーを確認することで通知されます)。

したがって、この問題を解決するには、ブラウザで JS が有効になっているかどうか、およびテンプレート<h:head>にプレーンな HTML ではなくコンポーネントが含まれているかどうかを確認<head>して、JSF がファイルを自動インクルードできるようにする必要がありjsf.jsます。

または、アプリケーションのビジネス要件により、アプリケーションが JS を無効にして設計どおりに機能する必要がある場合は<h:commandButton>、リンクのように見せるために CSS を使用する必要があります (背景、パディング、ボーダー、インセットなどを削除するなど)。

于 2013-03-14T11:42:36.933 に答える
0

これを試してください、これはうまくいくでしょう。

    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:form>

    <h:commandLink type="button" action="#{testBean.tsetLink}"> 
          <h:outputText value="A" />
    </h:commandLink>

</h:form>
</html>

ManagedBean

@ManagedBean
@RequestScoped
public class TestBean {

    public void tsetLink(){
    System.out.println("Link clicked!!!!!!!!!!!!");
    }
} 
于 2013-03-14T10:40:17.367 に答える
0

私の場合、この問題の原因は、構成が不十分な URL 書き換えフィルターでした。フィルター パターンの 1 つが意図せず一致しhttp://localhost:8080/mysite/javax.faces.resource/jsf.js.xhtml?ln=javax.faces、jsf.js の読み込みを妨げていました。この回答を確認してください: h:commandLink をクリックすると Uncaught ReferenceError: mojarra is not defined が発生します。

于 2013-09-26T06:54:54.577 に答える