2015-03-02 32 views
1

我使用Eclipse/jsf來創建我的web應用程序。 我試圖解決像This沒有標籤被定義爲名稱:ajax

一個問題,我包括:

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<jsp:root xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:rich="http://richfaces.org/rich"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 

我的代碼:

<h:inputText id="cod" value="#{myBean.nwcode}" 
size="25" maxlength="30" required="true" requiredMessage="CODE est obligatoire" > 
<f:ajax listener="#{myBean.namedChanged}" render="@form"/> 
           </h:inputText> 

缺少什麼?

如果標籤是不可能在這種情況下被使用,請告訴我如何使用valueChangeListener屬性,因爲我已經實現了一個方法:

public void OnproCodeChangeCheckValid(ValueChangeEvent VChEvnt) 
{ 
    if(!((String)VChEvnt.getNewValue()).equals(null)&&!((String)VChEvnt.getNewValue()).trim().isEmpty()) 
    { 
    nwprofvalid=!estprofileexist((String)VChEvnt.getNewValue()); 
    } 
} 

但這種方法並沒有被簡單地說調用:

valueChangeListener="#{myBean.OnproCodeChangeCheckValid}" 

也許是因爲它需要一個參數,所以如何通過它? 有什麼想法?

非常感謝提前。

例外:

javax.servlet.ServletException: /ajoutProfile.jspx @57,21 <f:ajax> Tag Library supports namespace: http://java.sun.com/jsf/core, but no tag was defined for name: ajax 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:321) 
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) 

com.sun.facelets.tag.TagException: /ajoutProfile.jspx @57,21 <f:ajax> Tag Library supports namespace: http://java.sun.com/jsf/core, but no tag was defined for name: ajax 
    com.sun.facelets.compiler.CompilationManager.pushTag(CompilationManager.java:193) 
    com.sun.facelets.compiler.SAXCompiler$CompilationHandler.startElement(SAXCompiler.java:194) 
    org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source) 
    org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source) 
    org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source) 
    org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) 
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) 
    org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) 
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) 
    org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) 
    org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) 
    org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source) 
    javax.xml.parsers.SAXParser.parse(Unknown Source) 
    com.sun.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:232) 
    com.sun.facelets.compiler.Compiler.compile(Compiler.java:105) 
    com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:218) 
    com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:149) 
    com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:100) 
    com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:517) 
    com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567) 
    org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) 
    org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:117) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:135) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:309) 
    org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) 

    org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) 
    org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) 
    org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) 
    org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) 
    com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:271) 
+0

嘗試這個'valueChangeListener =「#{myBean.OnproCodeChangeCheckValid}」' – Scorpion 2015-03-02 13:24:59

+0

@Scorpion,對不起,但我做到了,在我的問題中輸入錯誤。 – TiMr 2015-03-02 13:52:37

+0

嘗試此命名空間'' – Scorpion 2015-03-02 14:06:30

回答

4

<f:ajax>在JSF 2.0中引入的。您的問題症狀表明您使用的JSF 1.x缺少<f:ajax>標籤。至少,堆棧跟蹤中的com.sun.facelets.*類的存在證實您使用的是Facelets 1.x,這反過來證實您正在使用JSF 1.x.也就是說,在JSF 2.x中,Facelets類被移動到com.sun.faces.facelets.*,這裏和那裏有一些類重構(例如FaceletViewHandler不再存在)。

堆棧跟蹤還確認您已安裝了Ajax4JSF。在這種情況下,只需使用<a4j:ajax>而不是<f:ajax>即可根據找到的答案解決問題。

相關問題