【发布时间】:2016-07-17 09:45:58
【问题描述】:
我对警告有疑问:Could not resolve NavigationCase for outcome:...。
com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource
WARNUNG: JSF1064: Resource /common-content.xhtml not resolvable
警告似乎没有任何
影响我的应用程序,因为我利用 JSF 2 和 Mojarra 2.2.8 和 Primefaces 3.5 的隐式导航。我没有定义任何导航案例
在faces-config.xml内
有趣的是,导航本身可以正常工作,但警告会添加到 Faces 消息队列中,因此会在请求后显示在任何消息中。
以下代码显示了我的 home.xhtml
<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>
该页面仅包含适当的组合。我认为这就是问题所在。 结果总是 home.xhtml JSF 警告引用的页面只是组合。
编辑:
mainContentController的backing bean实现:
@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;
}
}
【问题讨论】: