【问题标题】:No tag was defined for name: ajax没有为名称定义标签:ajax
【发布时间】:2015-05-02 19:02:02
【问题描述】:

我正在使用 Eclipse / jsf 创建我的 Web 应用程序。 我试图解决像This

这样的问题

我包括:

<!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>

缺少什么?

如果在这种情况下无法使用 Tag,请告诉我如何使用 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)

【问题讨论】:

  • 试试这个valueChangeListener="#{myBean.OnproCodeChangeCheckValid}"
  • @Scorpion,对不起,但我这样做了,在我的问题中输入错误。
  • 试试这个命名空间&lt;html 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"&gt;
  • 您使用的是哪个 JSF 版本?
  • @TiyebBellal 可能会有所帮助:stackoverflow.com/questions/3297098/jsf2-0-tags-not-found

标签: ajax eclipse jsf


【解决方案1】:

&lt;f:ajax&gt; 是在 JSF 2.0 中引入的。您的问题症状表明您正在使用缺少 &lt;f:ajax&gt; 标记的 JSF 1.x。至少,堆栈跟踪中com.sun.facelets.* 类的存在确认您使用的是Facelets 1.x,这反过来又确认您使用的是JSF 1.x。也就是说,在 JSF 2.x 中,Facelets 类被移到了com.sun.faces.facelets.*,并进行了一些类重构(例如,FaceletViewHandler 不再存在)。

堆栈跟踪还确认您已安装 Ajax4JSF。在这种情况下,只需使用&lt;a4j:ajax&gt; 而不是&lt;f:ajax&gt; 即可根据您找到的答案解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 2016-04-09
    • 2014-09-13
    • 2012-09-18
    • 2017-11-28
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多