2016-04-15 21 views
-1

私は同じ質問で多くのページを読んでいますが、私のcommandButtonがアクションを呼び出さない理由(私はそれをデバッグして問題があります)を見つけることができません。私のコードはシンプルに見えますが...うまくいきません。多分それは初心者の問題ですが、私はどこにいるのか分かりません。commandButtonはマネージドBeanのアクションを呼び出さない

私は、JSF2とLiferay Faces Alloyを使用してライフタイム用のポートレットを作成しています。

私はまた、非常に教育的な質問commandLink/commandButton/ajax backing bean action/listener method not invokedを読んだことがありますが、ポイントのどれも私の問題を解決していません。ここで

は私のmainView.xhtmlファイルです:

<?xml version="1.0"?> 

<f:view 
    xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:aui="http://liferay.com/faces/aui" 
    xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 

    <h:head /> 
    <h:body> 
     <h:form> 
      <h:messages globalOnly="true" layout="table" /> 
      <h:outputText id="esteTexto" value="#{ramSession.texto}" /> 
      <br /> 
      <h:commandButton action="#{ramSession.add}" styleClass="btn btn-default" value="#{ramSession.texto}"> 
      </h:commandButton> 
     </h:form> 
    </h:body> 
</f:view> 

そして、ここでは私のSessionScoped ManagedBeanファイル、RamSession.javaです:

@ManagedBean 
@SessionScoped 
public class RamSession extends AbstractBaseBean implements Serializable { 

    private static final long serialVersionUID = 919724848720360000L; 
    private String texto; 

    public void add() { 
     this.texto = new String("Entrando"); 
    } 

    @PostConstruct 
    public void postConstruct() { 
     this.texto = new String("Jereje"); 
    } 

    public String getTexto() { 
     logger.info("gettingTexto"); 
     addGlobalSuccessInfoMessage(); 
     return this.texto; 
    } 

    public void setTexto(String texto) { 
     this.texto = texto; 
    } 
} 

私はまた、文字列(必要さえありません)を返す試してみました、actionListenerメソッドを使用し、ajaxでも何もしません。誰か助けてくれますか?どうもありがとう。

+0

そう、それが動作を開始しますか?そうでない場合、それはなぜ質問に含まれていますか? – BalusC

+0

両方を削除しましたとにかく動作しません。 質問に含まれている理由を尋ねたときに何を意味しているのか理解できませんでしたが、仕事がないときにのみ表示したいと思っています評価 ありがとうございました! :) – ferda

+0

このようにすれば、潜在的な原因をさらに絞り込むことができ、問題に寄与しない騒音を低減して質問を改善できます。 – BalusC

答えて

1

あなたのmojarraリスナーが正しく構成されていない可能性があります。

続く2つ以下のサブステップ

の一つ。

<dependency> 
    <groupId>com.liferay.faces</groupId> 
    <artifactId>liferay-faces-init</artifactId> 
    <version>3.1.3-ga4</version> 
</dependency> 

B:はそれぞれのpom.xmlに以下のコードを追加することによって、それぞれのLiferay JSFプロジェクトでのLiferay-顔-init.jar依存関係を追加します。すべてのJSFプロジェクトの各WEB-INF/web.xmlに次のコードを追加します。あなたは ` `を削除すると

<listener> 
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class> 
</listener> 
0

なぜ宣言でテキストを初期化しないのですか?

private String texto = "Jereje"; 

public void addGlobalSuccessInfoMessage(){ 
    //faces message 
} 

//Getter Setter 

その後、PostConstructメソッド全体を削除できます。 また、文字列を設定し、ナビゲーションなしで更新するだけの場合は、メッセージを更新するためのf:ajaxを持つf:setPropertyActionListenerを使用してください。 nullまたはvoid、またはactionListenerを返し、その中に文字列を設定したい場合はアクションを使用することができますが、なぜあなたが望むのか分かりません。このリンクは、これらのオプションに役立ちます... Answer by Balus C。 ゲッターメソッドから余分なロジックも削除したいことがあります。これはあなたの問題に影響することはありませんが、それはよりクリーンでゲッターに成功メッセージを作成するのは問題があるようです。

<h:form id="myForm"> 
    <h:messages globalOnly="true" layout="table" /> 
    <h:outputText id="esteTexto" value="#{ramSession.texto}" /> 
    <br /> 
    <h:commandButton value="#{ramSession.texto}" actionListener="#{ramSession.addGlobalSuccessInfoMessage()}" styleClass="btn btn-default"> 
     <f:setPropertyActionListener value="Entrando" target="#{ramSession.texto}" /> 
     <f:ajax render="myForm" /> 
    </h:commandButton> 
</h:form> 
+0

ご回答ありがとうございますが、宣言でテキストを初期化することはできません。私がこのアップデートで言ったように、.xmlファイルに不正な設定や宣言があるかもしれませんが、私はそれを見つけることができませんでした。同じコードで新しいプロジェクトを開始すると、 – ferda

関連する問題