2016-03-29 15 views
1

Uyarı ile ilgili bir sorunum var: Could not resolve NavigationCase for outcome:....JSF uyarısı nasıl tetiklenir: Sonucu için NavigationCase çözümlenemedi: puh-repair.xhtml

com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource 
WARNUNG: JSF1064: Resource /common-content.xhtml not resolvable 

uyarı i Mojarra 2.2.8 ve Primefaces 3.5 JSF 2 kullanılarak örtük navigasyon kaldıraç beri herhangi benim uygulamaya etkileyecek olması gibi görünmüyor. Bu konuda faces-config.xml

ilginç şey içinde herhangi navigasyon-durum tanımlamak vermedi kendisi düzgün çalıştığından emin navigasyon, ancak uyarı Yüzler mesajı kuyruğuna eklenir ve bunun bir talebe sonra herhangi iletinin içinde gösterilen.

Aşağıdaki kod

<h:body class="page-container"> 
    <p:growl id="message"></p:growl> 

     <div class="page-layout-container"> 
      <div> 
       <ui:insert name="header"> 
        <ui:include src="/template/puh-common-header.xhtml" /> 
       </ui:insert>    
      </div> 
      <div> 
       <ui:insert name="menu"> 
          <ui:include src="/template/puh-menu.xhtml" /> 
         </ui:insert> 
      </div> 
      <div> 
       <h:panelGroup id="content" layout="block"> 
       <ui:insert name="content"> 
        <ui:include src="/main-content/#{mainContentController.getContent()}"/> 
       </ui:insert> 
       </h:panelGroup> 
      </div>   
      <div> 
       <ui:insert name="footer"> 
        <ui:include src="/template/puh-common-footer.xhtml" /> 
       </ui:insert> 
      </div> 

     </div> 

</h:body> 

sayfa sadece uygun kompozisyonlar içerir benim home.xhtml gösterir. Bence sorun bu. Sonuç her zaman home.xhtml JSF uyarısı tarafından başvurulan sayfalar sadece kompozisyonlardır.

Düzenleme:

mainContentController ait destek fasulye impementation:

@Named("mainContentController") 
@SessionScoped 
public class MainContentController implements Serializable {  

    /** 
    * 
    */ 
    private static final long serialVersionUID = -6818446964735212239L; 



    private Logger logger = LogManager.getLogger(MainContentController.class); 

    public static String PAGE_HOME = "puh-home.xhtml"; 

    public static final String CONTENT_ERROR = "puh-error.xhtml"; 

    public static String CONTENT_COMMON = "puh-common-content.xhtml"; 

    public static String CONTENT_CONTACT = "puh-contact.xhtml"; 

    public static String CONTENT_REPAIR = "puh-repair.xhtml"; 

    public static String CONTENT_IMPRESSUM = "puh-impressum.xhtml"; 

    private String content = CONTENT_COMMON; 

    private void showControllerState() { 
     logger.info("Page "+ content + ".");   
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Page "+ content + ".")); 
    } 

    public String homeAction() { 
     content = CONTENT_COMMON;    
     showControllerState(); 
     return content; 
    } 

    public String serviceAction() { 
     content = CONTENT_REPAIR;    
     showControllerState(); 
     return content; 
    } 

    public String impressumAction() { 
     content = CONTENT_IMPRESSUM; 
     showControllerState(); 
     return content; 
    } 

    public String contactAction() { 
     content = CONTENT_CONTACT; 
     FacesContext facesContext = FacesContext.getCurrentInstance(); 
     String outcome = PAGE_HOME+"?faces-redirect=true"; // Do your thing? 

     // Because of Captcha Image 
     facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, outcome); 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Redirect "+ content + "."));   
     showControllerState(); 
     return content; 
    } 


public String getContent() { 
     return content; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

} 

cevap

0

Bu uyarıyı çözdüm ama gerçek problemlerle karşılaştım.

aşağıdaki kodu (Dinamik Anlatım Dil deyimi # aittir yöntemle "mainContentController.getContent()" {mainContentController.getContent dönüş değerine statik "/ ana-content" yolunu eklendi
<div> 
    <h:panelGroup id="content" layout="block"> 
    <ui:insert name="content"> 
     <ui:include src="/main-content/#{mainContentController.getContent()}"/> 
    </ui:insert> 
    </h:panelGroup> 
</div> 

pasajı değişti).

sonuç <div> <h:panelGroup id="content" layout="block"> <ui:insert name="content"> <ui:include src="#{mainContentController.getContent()}"/> </ui:insert> </h:panelGroup> </div>

ve destek fasulye şu anda davranış bu tür için gerçek cevabı yok bu

public class MainContentController implements Serializable { 

    private Logger logger = LogManager.getLogger(MainContentController.class); 

    public static String PAGE_HOME = "puh-home.xhtml"; 

    public static String CONTENT_COMMON = "/main-content/puh-common- content.xhtml"; 

    private String content = CONTENT_COMMON; 

    public String getContent() { 
    return content; 
    } 

    public void setContent(String content) { 
    this.content = content; 
    } 

    private void handleNavigation() { 
     logger.info("Navigate to page "+ content + ".");    
     FacesContext facesContext = FacesContext.getCurrentInstance(); 
     String outcome = PAGE_HOME+"?faces-redirect=true";   facesContext.getApplication().getNavigationHandler().handleNavigation(facesContext, null, outcome);   
    } 

    public String homeAction() { 
     content = CONTENT_COMMON;    

     handleNavigation(); 
     return content; 
    } 
} 

benziyor ama sorun ilişkilidir düşünüyorum JSF'nin yaşam döngüsü. Sorunu vurgulamak için

.Orada differnence Hem tablolarda

1. <ui:include src="/main-content/#{mainContentController.getContent()}"/> 

ile

2. <ui:include src="#{mainContentController.getContent()}"/> 

, (1 ve 2) tam olarak aynı yol içine sonucu ancak kabın davranışları farklıdır

.

0

burada yönetilen fasulye fonksiyonu ne döndürmektedir ?:

<ui:insert name="content"> 
<ui:include src="/main-content/#{mainContentController.getContent()}"/> 
</ui:insert> 

çünkü uyarı göre:

WARNUNG: JSF1064: Resource /common-content.xhtml değil res olvable

Başvuru yaptığınız dosya, belirttiğiniz konumda mevcut görünmüyor. Ayrıca projenizin dosya yapısını gönderdiyseniz de yardımcı olacaktır.