2013-08-25 22 views
5

Aşağıdaki hatayı alıyorum: Eşgörünümlü durumdan eşleşen eşgörünüm bulunamıyor' /index.xhtml 'eylem için' # {medcontroller.getMedGeneric} 'sonuç ile' [email protected] 'Eşgörünümlü durumdan, görünüm için '-index'/index.xhtml 'ile eşleşen durum bulamıyor: JSF

Ben jsf için yeni ve bu hatayı çözmek için gerçekten clueless değilim.

MedController.java burada

@ManagedBean(name = "medcontroller") 
@SessionScoped 

public class MedController implements Serializable { 
    int startId; 
    String gName; 
    int endId; 
    DataModel medNames; 
    //DataModel medGeneric; 
    MedicineHelper helper; 
    private int recordCount = 1000; 
    private int pageSize = 10; 
    private Medicine current; 
    private int selectedItemIndex; 

    public MedController() { 
     helper = new MedicineHelper(); 
     startId = 1; 
     endId = 10; 
    } 

    public MedController(int startId, int endId) { 
     helper = new MedicineHelper(); 
     this.startId = startId; 
     this.endId = endId; 
    } 

    public Medicine getSelected() { 
     if (current == null) { 
      current = new Medicine(); 
      selectedItemIndex = -1; 
     } 
     return current; 
    } 

    public DataModel getMedNames() { 
     if (medNames == null) { 
      medNames = new ListDataModel(helper.getMedNames(startId, endId)); 
     } 
     return medNames; 
    } 

    public String getgName() 
     { 
     return gName; 
    } 

    public void setgName(String gName) 
     { 
     this.gName = gName; 
    } 

    public DataModel getMedGeneric() { 
     if (medNames == null) { 
      medNames= new ListDataModel(helper.getMedGeneric(gName)); 
     } 
     return medNames; 
    } 

    void recreateModel() { 
     medNames = null; 
    } 

    public boolean isHasNextPage() { 
     if (endId + pageSize <= recordCount) { 
      return true; 
     } 
     return false; 
    } 

    public boolean isHasPreviousPage() { 
     if (startId-pageSize > 0) { 
      return true; 
     } 
     return false; 
    } 

    public String next() { 
     startId = endId+1; 
     endId = endId + pageSize; 
     recreateModel(); 
     return "index"; 
    } 

    public String previous() { 
     startId = startId - pageSize; 
     endId = endId - pageSize; 
     recreateModel(); 
     return "index"; 
    } 

    public int getPageSize() { 
     return pageSize; 
    } 

    public String prepareView(){ 
     current = (Medicine) getMedNames().getRowData(); 
     return "browse"; 
    } 
    public String prepareList(){ 
     recreateModel(); 
     return "index"; 
    } 

} 

Ve

<ui:define name="body"> 
    <h:form styleClass="jsfcrud_list_form"> 
    <h:commandLink action="#{medcontroller.previous}" value="Previous #{medcontroller.pageSize}" rendered="#{medcontroller.hasPreviousPage}"/> 
    <h:commandLink action="#{medcontroller.next}" value="Next #{medcontroller.pageSize}" rendered="#{medcontroller.hasNextPage}"/> 
    <h:dataTable value="#{medcontroller.medNames}" var="item" border="1" cellpadding="15" cellspacing="10" rowClasses="jsfcrud_odd_row,jsfcrud_even_row" rules="all" style="border:solid 1px"> 
    <h:column> 
     <f:facet name="header"> 
      <h:outputText value="BrandName"/> 
     </f:facet> 
      <h:outputText value="#{item.brandName}"/> 
    </h:column> 
    <h:column> 
     <f:facet name="header"> 
      <h:outputText value="Generic"/> 
     </f:facet> 
      <h:outputText value="#{item.generic}"/> 
    </h:column> 
    <h:column> 
     <f:facet name="header"> 
      <h:outputText value=" "/> 
     </f:facet> 
      <h:commandLink action="#{medcontroller.prepareView}" value="View"/> 
    </h:column> 
    </h:dataTable> 

    <h:inputText value="#{medcontroller.gName}" /> 
    <h:commandButton value="Submit" action="#{medcontroller.getMedGeneric}" /> 
    </h:form> 
</ui:define> 

bana hatayı çözmek yardım edin index.xhtml benim JSF dosyası

: Ben şu koduyla bir ManagedBean var. Ayrıca, bir face-config.xml dosyası yok. Netfeans ide 7.1.2 web uygulaması jsf ve hazırda bekleme çerçevesi ile kullanıyorum.

Önceden teşekkür ederiz.

+0

Sen Düğmeye "Gönder" olduğunu bastığınızda olmasını istediğim tam olarak ne söylemeyi unuttum denemelisiniz. – BalusC

cevap

5

<h:commandButton action> bazı iş mantığını çağırır ve (yeniden) istediğiniz hedef sayfasını görüntüleme temsil ya void veya String döndüren bir yönteme işaret etmelidir. Ancak, JSF gezinme işleyicisine herhangi bir anlam ifade etmeyen bir ListDataModel döndürdünüz ve dolayısıyla bu hata. Böyle

şey yapmalıdır: Bu someViewId.xhtml nereye taşınacak

public String getMedGeneric(){ 
    // Do your business logic here. 

    return "someViewId"; 
} 

. Ancak, aynı görünümde kalmayı düşünüyorsanız, yalnızca void (veya null) döndürmesine izin verin ve aynı görünümü yeniden görüntüler. Bu arada

public void getMedGeneric(){ 
    // Do your business logic here. 
} 

, gerçekten get ile eylem yöntemi adlarını önek kötü adlandırma kuralı bu. Bu kafa karıştırıcıdır ve kodunuzu kendinden belgelememektedir. Bunun yerine loadMedGeneric() ya da öylesine. Sadece somut işlevsel gereksinim hakkında herhangi bir şey söylemediğin gibi, bu düğmenin tam olarak ne yapması gerektiğini tahmin ediyorum.

+0

Teşekkürler, işe yaradı. – GobSmack

+0

Bitti, tekrar teşekkürler. – GobSmack

0

getMedGeneric, face-config.xml dosyasında anlatılan başka bir sayfaya yönlendirmeyi temsil eden java.lang.String öğesini döndürmelidir. Sizin durumunuzda bir model döndürür, bu yüzden maalesef işe yaramaz. ActionListener'a getMedGeneric() eylemini koymaya çalışın ve ardından eylemde gezinme dizesini ayarlayın. yani:

action="navString" actionListener="#{medcontroller.getMedGeneric}" 
+1

Cevabınız için teşekkürler, ancak çalışmıyor, yine de bir hata gösteriyor: 'navString' eylemi 'navString' eylemi için-view-id '/index.xhtml' ile eşleşen gezinme durumu bulunamıyor 'navString' – GobSmack

-2

sadece

actionListener="#{medcontroller.getMedGeneric}"