1

プライムフェイス初心者です。

ドキュメントのように、タグに関するプライムフェイスの例をテストしようとしましたが、

これは私のjsfページコードです:

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://primefaces.prime.com.tr/ui" prefix="p"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

 <head>

  <base href="<%=basePath%>">

  <title>My JSP 'index.jsp' starting page</title>
 </head>

 <body>
  <f:view>
   <h:form>
    <h:outputText id="txt_count" value="#{counterBean.count}" />
    <p:poll actionListener="#{counterBean.increment}" update="txt_count" />
   </h:form>
  </f:view>
 </body>


</html>

これが私のバックビーン コードです: [コード]

import javax.faces.event.ActionEvent;


public class CounterBean {
private int count;
public void increment(ActionEvent actionEvent) {
count++;
}
//getters and setters
public int getCount() {
 return count;
}
public void setCount(int count) {
 this.count = count;
}
}

しかし、私がそれを実行しようとしたとき。私はこのエラーを受け取りました:

java.lang.IllegalStateException: Component javax.faces.component.UIViewRoot@ed32c4 not expected type.  Expected: javax.faces.component.UIForm.  Perhaps you're missing a tag?
 com.sun.faces.taglib.html_basic.FormTag.setProperties(FormTag.java:199)
 javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:586)
 javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1070)
 com.sun.faces.taglib.html_basic.FormTag.doStartTag(FormTag.java:273)
 org.apache.jsp.index_jsp._jspx_meth_h_005fform_005f0(index_jsp.java:120)
 org.apache.jsp.index_jsp._jspService(index_jsp.java:93)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
 com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:428)
 com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:444)
 com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:116)
 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
 com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

なにが問題ですか?どうすれば解決できますか?私はTomcat 6を使用しています よろしくお願いします

4

2 に答える 2

1
java.lang.IllegalStateException: 
  Component javax.faces.component.UIViewRoot@ed32c4 not expected type. 
  Expected: javax.faces.component.UIForm. Perhaps you're missing a tag? 

例外はh:form、ページ内のどこかに配置されていないf:view場所にいることを示しています。

コード例は(醜いスク​​リプトレットを除いて)問題ないように見えるため、実行していると思われるコードを実行していない可能性があります。ビルドとデプロイメントをやり直し、すべてが正しく行われたかどうかを確認します。

于 2010-07-12T17:03:11.733 に答える
1

バージョン3でURIを変更しました。使用:http://primefaces.org/ui

于 2012-08-31T13:33:00.527 に答える