2016-03-27 2 views
0

ユーザーがカンマ区切りの数値フィールドに入力した値に応じて、フォーム提出後に別のページに移動する必要があります。続いナビゲーションルールが適用されていません

はcomsepの値を取得するためのコードであり、ボタンを提出:

 <h:inputText id="comsep" value="#{bean.comsep}" ></h:inputText> 
     <h:commandButton value="Submit" action ="bean.func"></h:commandButton> 

これは豆である:

import javax.faces.bean.ManagedBean; 
    import javax.faces.bean.ManagedProperty; 

    @ManagedBean 
    public class Bean 
    { 
     public String comsep; 

    public Bean() 
    { 
    } 

    public String func() 
    { 
     double avg = calculate(); 
     if (avg == 10) 
      { return "casea"; } 
     else 
      { return "caseb"; } 
    } 

    public double calculate() 
     { 
     String[] pos = comsep.split(","); 
     double avg = 0; 
     for (int i = 0; i < pos.length; i++) 
     avg = avg + Integer.parseInt(pos[i]); 
     avg = avg/pos.length; 
     return avg; 
     } 


public String getComsep() { 
    return comsep; 
} 

public void setComsep(String comsep) { 
    this.comsep = comsep; 
} 

} 

、これは顔-config.xmlにある:

<?xml version="1.0" encoding="UTF-8"?> 
    <faces-config 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee   h http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" 
    version="2.2"> 

    <navigation-rule> 
    <from-view-id>/Home.xhtml</from-view-id> 

    <navigation-case> 
    <from-action>#{bean.func}</from-action> 
    <from-outcome>casea</from-outcome> 
    <to-view-id>/Page1.xhtml</to-view-id> 
    </navigation-case> 
    <navigation-case> 
    <from-action>#{bean.func}</from-action> 
    <from-outcome>caseb</from-outcome> 
    <to-view-id>/Page2.xhtml</to-view-id> 
    </navigation-case> 
    </navigation-rule> 
    </faces-config> 

avg == 10 else page2の場合、期待される結果はpage1ですが、これは起こっていません。私がsubmitを押すと、何も起こらないが、home.xhtmlがリフレッシュされる。

JSFの新機能ですので、新人ミスがあれば申し訳ありません。

+0

これは 'h:inputtext'で動作しますか?タイトルに「タグ」を追加する必要はありません。また**タイトルの**問題**を要約する。そして、いくつかの良いnon-jsf 1.2チュートリアルから始めてください。 – Kukeltje

+0

@Kukeltjeいいえ、h:inputtextのどちらでも動作しません。 – NJWeb

答えて

1

commandButtonaction属性がBeanからメソッドを呼び出すためにEL式ではない文字列を必要とする:あなたはしばらく「顔-config.xmlの」ファイル」の使用を放棄することができ

<h:commandButton ... action="#{bean.func}"></h:commandButton> 

バージョン2.0以上のJSFを使用してください。

+0

ありがとう、しかしあなたはもっと明確になることができますか?私は、このようなサブミットアクションでBeanメソッドを呼び出すWeb上の例を見ています - bean.func ELが必要な場合は、ナビゲーションを実行する方法を教えてください。 faces-config.xmlには文字列に従って記述されたナビゲーションケースがあるためです。 – NJWeb

+0

この場合、人々は、このメソッドアクションの文字列returnステートメントに直接宛先ページ名を指定することによってナビゲーションを行います。例えば、 'public string func(){... return" somePage.xhtml "; } '。 – Omar

+0

ありがとうオマール。あなたの解決策は正しいです。しかし、私は括弧をつけずにボタンを送信してアクションを呼び出すという別の愚かな間違いをしていました。 action = "studentService.display()" – NJWeb

関連する問題