2013-08-25 5 views
5

मुझे निम्न त्रुटि मिल रही है: मिलान-दृश्य आईडी// index.xhtml के साथ मिलान नेविगेशन केस खोजने में असमर्थ 'कार्रवाई के लिए' # {medcontroller.getMedGeneric} 'परिणाम के साथ' [email protected] 'कार्रवाई के लिए से-व्यू-आईडी '/index.xhtml' के साथ मिलान नेविगेशन केस खोजने में असमर्थ: JSF

मैं जेएसएफ के लिए नया हूं और मैं वास्तव में इस त्रुटि को हल करने के बारे में अनजान हूं।

MedController.java

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

} 

और यहाँ मेरी JSF फ़ाइल

index.xhtml

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

मदद कृपया मुझे त्रुटि का समाधान है: मैं निम्नलिखित कोड के साथ एक ManagedBean है। इसके अलावा, मेरे पास चेहरे-config.xml फ़ाइल नहीं है। मैं जेएसएफ और हाइबरनेट फ्रेमवर्क के साथ netbeans ide 7.1.2 वेब एप्लिकेशन का उपयोग कर रहा हूं।

अग्रिम धन्यवाद।

+0

आप वास्तव में क्या आप ऐसा करने के लिए जब आप प्रेस कि "सबमिट करें" बटन चाहते बताना भूल गया। – BalusC

उत्तर

5

<h:commandButton action> एक तरीका है जिसके कुछ व्यापार तर्क का आह्वान और या तो void या एक String रिटर्न लक्ष्य पृष्ठ आप के लिए (री) करना चाहते हैं प्रदर्शन का प्रतिनिधित्व करने को इंगित करना चाहिए। हालांकि आपने पूरे ListDataModel को वापस कर दिया है जो जेएसएफ नेविगेशन हैंडलर को कोई समझ नहीं ले रहा है और इसलिए यह त्रुटि है।

कुछ इस तरह करना चाहिए:

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

    return "someViewId"; 
} 

यह someViewId.xhtml पर पहुंच जाएंगे। हालांकि, यदि आप एक ही दृश्य पर चिपकने का इरादा रखते हैं, तो बस इसे void (या null) लौटाएं और यह वही दृश्य फिर से चलाएगा।

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

वैसे, यह वास्तव में get के साथ कार्रवाई विधि के नाम उपसर्ग के लिए एक गरीब नामकरण परंपरा है। यह भ्रमित है और आपके कोड को स्वयं-दस्तावेज नहीं बनाता है। इसके बजाय इसे loadMedGeneric() या उससे भी नाम दें। मैं केवल अनुमान लगा रहा हूं क्योंकि आपने कंक्रीट कार्यात्मक आवश्यकता के बारे में कहीं भी नहीं बताया था, वास्तव में वह बटन क्या करना चाहिए।

+0

धन्यवाद, यह काम करता है। – GobSmack

+0

हो गया, फिर से धन्यवाद। – GobSmack

0

getMedGeneric को java.lang.String वापस करना चाहिए जो चेहरे-config.xml में वर्णित किसी अन्य पृष्ठ पर नेविगेशन का प्रतिनिधित्व करता है। आपके मामले में यह कुछ मॉडल लौटाता है, इसलिए यह दुर्भाग्यपूर्ण काम नहीं करेगा। GetMedGeneric() कार्रवाई को actionListener पर डालने का प्रयास करें और फिर कार्रवाई में नेविगेशन स्ट्रिंग डालें। अर्थात:

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

उत्तर के लिए धन्यवाद, लेकिन यह काम नहीं कर रहा है, फिर भी एक त्रुटि दिखाता है: परिणाम 'navString' के साथ कार्रवाई-nav -ring '/index.xhtml' के साथ मिलान नेविगेशन केस खोजने में असमर्थ 'navString' – GobSmack

-2

आप की कोशिश करनी चाहिए सिर्फ

actionListener="#{medcontroller.getMedGeneric}" 
संबंधित मुद्दे