2016-03-27 77 views
0

Kullanıcı tarafından virgülle ayrılmış sayısal alanda girilen değere bağlı olarak, form gönderildikten sonra farklı sayfalara gitmem gerekiyor.Gezinme kuralı uygulanmadı

ardından comsep değerini kapma ve Gönder düğmesini kodudur:

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

ve bu fasulye geçerli:

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; 
} 

} 

ve bu yüzler-config.xml geçerli:

<?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> 

Beklenen sonuç sayfa1 ise avg == 10 else sayfa2, ancak bu gerçekleşmiyor. Gönderdiğimde hiçbir şey olmaz, ancak home.xhtml yenilenir.

JSF için oldukça yeniyım, varsa çaylak hataları için çok üzgünüm.

+0

Yani bir h: inputtext 'ile çalışır? Ve başlıkta 'etiketler' eklemenize gerek yok. Ayrıca başlıktaki ** problemi ** özetler. Ve bazı iyi olmayan jsf 1.2 öğretici ile başlayınız. – Kukeltje

+0

@Kukeltje hayır h: inputtext ile çalışmaz. – NJWeb

cevap

1

commandButton ait action nitelik fasulye yöntemi çağırmak için bir EL ifadesi bir dize gerekir: Size ederken "yüzler-config.xml" dosyasının' kullanımını vazgeçebileceğini

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

2.0 JSF sürümünü veya daha yeni sürümünü kullanıyorsunuz.

+0

teşekkürler, ama daha net olabilir misiniz? Bu gibi bir gönderme işlemi üzerinde fasulye yöntemini çağıran web üzerindeki tüm örnekleri görüyorum - bean.func Bir EL'ye ihtiyaç duyarsa, insanlar nasıl gezinme yapmalı? faces-config.xml, dizelere göre yazılmış gezinme durumlarına sahiptir. – NJWeb

+0

Bu durumda gezinme işlemi, bu yöntem eyleminin dize dönüş ifadesinde doğrudan hedef sayfa adı belirtilerek gezinme yapar; ör., "Public String func() {... return" somePage.xhtml "; } '. – Omar

+0

Teşekkürler Omar. Çözümünüz doğru. Bununla birlikte, göndermelerimdeki eylemi eğriler olmaksızın çağırmaktan başka bir aptalca hata yapıyordum ve #; action = "studentService.display()". – NJWeb