【发布时间】:2014-03-02 04:28:25
【问题描述】:
我正在研究仅在第一个选择菜单未设置为“P”或“N”时才可见的面板组选择菜单。我找到了一个示例,但在我尝试之前,我收到了一条错误提示
java.lang.NoClassDefFoundError: javax/servlet/jsp
/jstl/core/Config
这很奇怪,因为我确定我使用的是 jsf 2.2。我的项目库中唯一的 jar 文件是:
javax.faces-2.2.5.jar
以下是我根据找到的示例编写的新代码部分。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" >
<h:body>
<h:form>
<b>Blue tooth test: </b>
<h:selectOneMenu value="#{qcFormBean.dliStickerValue}">
<f:selectItem itemValue="P" itemLabel="Pass" />
<f:selectItem itemValue="N" itemLabel="N:A" />
<f:selectItem itemValue="M" itemLabel="FAIL-Mechanical" />
<f:selectItem itemValue="E" itemLabel="FAIL-Electrical" />
<f:selectItem itemValue="C" itemLabel="FAIL-Cosmetic" />
<f:selectItem itemValue="S" itemLabel="FAIL-Software" />
<f:ajax event="change" execute="@this" render="perfbyDliSticker" />
</h:selectOneMenu>
<h:panelGroup id="perfbyDliSticker">
<h:selectOneMenu value="#{qcFormBean.stickerFreq}"
rendered="#{!qcFormBean.dliStickerValue eq 'P' or !qcFormBean.dliStickerValue eq 'N'}">
<f:selectItem itemValue="O" itemLabel="Often" />
<f:selectItem itemValue="S" itemLabel="Seldom" />
</h:selectOneMenu>
是我做错了什么,还是我试图渲染它的方式不是 JSF-ish,或者我错过了更多文件,因为我之前添加了这些文件
jsf-api.jar jstl-1.2.jar jsf-impl.jar
但后来我在 Eclipse 中遇到了一个 tomcat 错误,说该文件现在是一个 jsp 文件而不是一个 jsf 文件,需要添加到 web.xml 中。所以肯定有别的办法。
--------更新-----
对我的代码进行了更改是更新:
<h:selectOneMenu value="#{qcFormBean.dliStickerValue}">
<f:selectItem itemValue="P" itemLabel="Pass or Not applicable" />
<f:selectItem itemValue="M" itemLabel="FAIL-Mechanical" />
<f:selectItem itemValue="E" itemLabel="FAIL-Electrical" />
<f:selectItem itemValue="C" itemLabel="FAIL-Cosmetic" />
<f:selectItem itemValue="S" itemLabel="FAIL-Software" />
<f:ajax event="change" execute="@this" render="perfbyDliSticker" />
</h:selectOneMenu>
<h:panelGroup id="perfbyDliSticker">
<h:selectOneMenu value="#{qcFormBean.performedByRoleID}"
rendered="#{!qcFormBean.dliStickerValue eq 'P'}">
<f:selectItem itemValue="A" itemLabel="Always" />
<f:selectItem itemValue="O" itemLabel="Often" />
<f:selectItem itemValue="S" itemLabel="Seldom" />
</h:selectOneMenu>
--更新 2_----- 添加我的 web.xml 看看是否有帮助。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<description>State saving method: 'client' or 'server' (default). See JSF Specification section 2.5.2</description>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsf</welcome-file>
<welcome-file>welcome.jsf</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
【问题讨论】:
-
好像jar文件名不对
javax.faces-2.2.5.jar重命名为javax.faces.jar -
我重命名了 Jar 但错误仍然存在。
-
ok 尝试导入jar文件并将其添加到项目类路径
/WEB-INF/lib? -
它已经添加到我那里,我所做的只是在 /WEB-INF/lib 路径上更改它的名称。我想我的面板组的渲染语法可能不正确或其他什么。
-
第二个
selectOneMenu中的值有编译语法错误#{qcFormBean.}你需要确定qcFormBean托管bean中的哪个值在渲染成功后取它?