gpt4 book ai didi

richfaces - "no tag was found"错误

转载 作者:行者123 更新时间:2023-12-04 23:32:12 33 4
gpt4 key购买 nike

我正在尝试实现一个非常简单的 RichFaces 应用程序(遵循 developer guide 中的示例,但遇到了我无法解决的错误。

我的代码似乎可以正确构建并部署到 Tomcat (localhost),但是当打开索引页面时出现异常:

javax.faces.view.facelets.TagException: /index.xhtml @13,19 <a4j:form> Tag Library supports namespace: http://richfaces.org/a4j, but no tag was defined for name: form

我试图加载的索引页面如下:
<?xml version='1.0' encoding='UTF-8' ?>
<!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://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body><f:view>
<a4j:form>
<rich:panel header="This is the title" style="width:400px;">
<h:outputText value="Enter your name:"/>
<h:inputText value="#{MyBean.message}">
<f:validateLength minimum="1" maximum="20"/>
</h:inputText>
</rich:panel>
</f:view></a4j:form>
</h:body>
</html>

据我所知,这与开发人员指南中的示例相同。我正在 Netbeans 6.8 中开发,使用 JSF 2.0 的 MyFaces 实现,并添加了 RichFaces 和 Apache Commons jar 作为库,异常声明的标签实际上是 Netbeans 自动建议的!

从 Apache Commons,我补充说:
beanutils,集合,摘要器,日志记录

在 RichFaces 中,我添加了:
Richfaces-api、richfaces-impl、richfaces-impl-jsf2、richfaces-ui

如果提供 bean 代码和/或 web.xml 有用,请说出来,我只是想避免因为可能是一个简单的错误而写一篇大文章。

最佳答案

对于 RichFaces 4.x,请使用“rich:popupPanel”。我从 RichShowCase 得到它:

<a4j:status onstart="#{rich:component('statPane')}.show()"
onstop="#{rich:component('statPane')}.hide()" />
<h:form id="form">
<rich:dataTable value="#{carsBean.allInventoryItems}" var="car"
iterationStatusVar="it" id="table" rows="15">
<rich:column>
<f:facet name="header">#</f:facet>
#{it.index}
</rich:column>
<rich:column>
<f:facet name="header">Vendor</f:facet>
<h:outputText value="#{car.vendor}" />
</rich:column>
<rich:column>
<f:facet name="header">Model</f:facet>
<h:outputText value="#{car.model}" />
</rich:column>
<rich:column>
<f:facet name="header">Price</f:facet>
<h:outputText value="#{car.price}" />
</rich:column>
<rich:column>
<f:facet name="header">Mileage</f:facet>
<h:outputText value="#{car.mileage}" />
</rich:column>
<rich:column>
<f:facet name="header">VIN</f:facet>
<h:outputText value="#{car.vin}" />
</rich:column>
<rich:column>
<a4j:commandLink styleClass="no-decor" execute="@this"
render="@none" oncomplete="#{rich:component('confirmPane')}.show()">
<h:graphicImage value="/images/icons/delete.gif" alt="delete" />
<a4j:param value="#{it.index}"
assignTo="#{carsBean.currentCarIndex}" />
</a4j:commandLink>
<a4j:commandLink styleClass="no-decor" render="editGrid"
execute="@this" oncomplete="#{rich:component('editPane')}.show()">
<h:graphicImage value="/images/icons/edit.gif" alt="edit"/>
<a4j:param value="#{it.index}"
assignTo="#{carsBean.currentCarIndex}" />
<f:setPropertyActionListener target="#{carsBean.editedCar}"
value="#{car}" />
</a4j:commandLink>
</rich:column>
<f:facet name="footer">
<rich:dataScroller page="#{carsBean.page}" />
</f:facet>
</rich:dataTable>

<a4j:jsFunction name="remove" action="#{carsBean.remove}"
render="table" execute="@this"
oncomplete="#{rich:component('confirmPane')}.hide();" />

<rich:popupPanel id="statPane" autosized="true">
<h:graphicImage value="/images/ai.gif" alt="ai" />
Please wait...
</rich:popupPanel>

<rich:popupPanel id="confirmPane" autosized="true">
Are you sure you want to delete the row?
<a4j:commandButton value="Cancel"
onclick="#{rich:component('confirmPane')}.hide(); return false;" />
<a4j:commandButton value="Delete" onclick="remove(); return false;" />
</rich:popupPanel>

<rich:popupPanel header="Edit Car Details" id="editPane" domElementAttachment="parent" width="400" height="170">
<h:panelGrid columns="3" id="editGrid">
<h:outputText value="Vendor" />
<h:outputText value="#{carsBean.editedCar.vendor}" />
<h:panelGroup />
<h:outputText value="Model" />
<h:outputText value="#{carsBean.editedCar.model}" />
<h:panelGroup />
<h:outputText value="Price" />
<h:inputText value="#{carsBean.editedCar.price}" required="true"
requiredMessage="Price is required" id="price"
converterMessage="Should be a valid price"
validatorMessage="Should be a valid price" label="Price field">
<f:validateDoubleRange/>
</h:inputText>
<rich:message id="priceMsg" for="price" />
<h:outputText value="Mileage" />
<h:inputText value="#{carsBean.editedCar.mileage}" id="mage"
converterMessage="Should be a valid mileage"
validatorMessage="Should be a valid mileage" label="Mileage field" >
<f:validateDoubleRange/>
</h:inputText>
<rich:message id="madeMsg" for="mage" />
<h:outputText value="VIN" />
<h:inputText value="#{carsBean.editedCar.vin}" id="vin"
required="true" validatorMessage="Not a valid 17-digit VIN"
converterMessage="Not a valid 17-digit VIN"
requiredMessage="VIN is required">
<f:validateLength minimum="17" maximum="17" />
</h:inputText>
<rich:message id="vinMsg" for="vin" />
</h:panelGrid>
<a4j:commandButton value="Store" action="#{carsBean.store}"
render="table" execute="editPane"
oncomplete="if (#{facesContext.maximumSeverity==null}) {#{rich:component('editPane')}.hide();}" />
<a4j:commandButton value="Cancel"
onclick="#{rich:component('editPane')}.hide(); return false;" />
</rich:popupPanel>
</h:form>

关于richfaces - "no tag was found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451825/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com