2010-12-07 2 views
0

Я, похоже, не работаю. Я использую ледяные поверхности и очень простую с двумя колоннами. Один с такими действиями, как remove, а другой - строкой (представляющей регулярное выражение). Для того, чтобы действие Удалить, чтобы удалить правый ряд, я пытаюсь связать его с фактическим элементом с:<f: propertyActionListener> тег не найден

<html xmlns:ice="http://www.icesoft.com/icefaces/component" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:m="http://www.mitre.org/asias/jsf"> 
    <ui:composition> 
    <ice:dataTable binding="#{binding}" 
     value="#{binding.editableRows}" 
     var="item"> 
     <ice:column> 
     <f:facet name="header"> 
      <ice:commandLink styleClass="linkBlue" 
      action="#{binding.addEditableRow}"> 
      <ice:outputText value="Add" /> 
      </ice:commandLink> 
     </f:facet> 
     <ice:commandLink styleClass="linkBlue" 
      action="#{binding.removeEditableRow}"> 
      <f:propertyActionListener value="#{item}" target="#{binding.actionRow}" /> 
      <ice:outputText value="Remove" /> 
     </ice:commandLink> 
     </ice:column> 
     <ice:column> 
     <f:facet name="header"> 
      <ice:outputText value="Regular Expression" /> 
     </f:facet> 
     <ice:inputText value="#{item.object}" size="100" /> 
     </ice:column> 
    </ice:dataTable> 
    </ui:composition> 
</html> 

Все, что я нашел на это говорит о том, что мне нужно JSF 1.2. Я использую JSF 1.2. Вот конфигурационный файл Apache Ivy я использую, чтобы управлять своими зависимостями:

<ivy-module version="2.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 

<info organisation="org.mitre.asias" module="testwebproject" /> 

    <configurations defaultconfmapping="default->default"> 
     <conf name="default" visibility="public" description="needed for deployment" extends="runtime,master" /> 
     <conf name="master" visibility="public" description="only this artifact" /> 
     <conf name="runtime" visibility="public" description="libraries only needed at runtime" extends="compile" /> 
     <conf name="provided" visibility="public" description="provided by container, not needed for deployment" /> 
     <conf name="test" visibility="private" description="needed for testing" /> 
     <conf name="compile" visibility="public" description="needed for compilation" /> 
     <conf name="sources" visibility="public" description="the source artifact, if any."/> 
     <conf name="javadoc" visibility="public" description="the javadoc artifact, if any."/> 
     <conf name="optional" visibility="public" description="contains all optional dependencies"/> 
     <conf name="ide" visibility="public" description="all libraries, sources, and javadoc needed for ide" extends="master,compile,provided,test,sources,javadoc" /> 
    </configurations> 

<dependencies> 
     <dependency org="commons-lang" name="commons-lang" rev="2.4" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="log4j" name="log4j" rev="1.2.16" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.1" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 

     <dependency org="javax.el" name="el-api" rev="2.1.2-b05" conf="provided->compile(*),provided(*),runtime(*),master(*)" /> 
     <dependency org="javax.servlet" name="servlet-api" rev="2.5" conf="provided->compile(*),provided(*),runtime(*),master(*)" /> 
     <dependency org="javax.servlet" name="jsp-api" rev="2.0" conf="provided->compile(*),provided(*),runtime(*),master(*)" /> 
     <dependency org="org.icefaces" name="icefaces" rev="1.8.2" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="org.icefaces" name="icefaces-comps" rev="1.8.2" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="org.icefaces" name="icefaces-facelets" rev="1.8.2" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="javax.faces" name="jsf-api" rev="1.2_13" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="javax.faces" name="jsf-impl" rev="1.2_13" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 
     <dependency org="com.sun.facelets" name="jsf-facelets" rev="1.1.14" conf="compile->compile(*),master(*);runtime->runtime(*)" /> 

     <dependency org="junit" name="junit" rev="4.8.1" conf="test->default" /> 

     <exclude module="servlet-api" conf="default" /> 
     <exclude module="el-api" conf="default" /> 
     <exclude module="jsp-api" conf="default" /> 
</dependencies> 
</ivy-module> 

Я использую затмение с IvyDE управлять этой библиотекой и экземпляром сервера Tomcat работает с «Использовать метаданные рабочей области» выбран. Есть ли какое-то затмение или кошка, которые могут вводить неправильную версию JSF? Когда я смотрю на jsf-impl jar, который включен Ivy, я вижу, что в этой банке есть com.sun.faces.taglib.jsf_core.SetPropertyActionListenerImpl и SetPropertyActionListenerTag. Я понимаю, что это должно быть все, что нужно. Есть идеи? Я что-то пропустил или просто схожу с ума?


EDIT:

Теперь я получаю очень расстроен. По предложению BalusC я обновил my faces-config.xml, чтобы использовать определение схемы 1.2 вместо 1.1 dtd. Это не помогло. Поэтому я ищу для получения дополнительной информации. Я нашел еще одну статью stackoverflow, относящуюся к (this issue), однако не было разрешения, кроме получения новой версии jsf-facelets.jar (из которой новая/старая версия не указана в списке). Я использую последнюю версию, доступную на repo1.maven.org/maven2 (1.1.14). Поэтому на фронт не идти. Мои новые вопросы в том, почему у facelets есть какое-то отношение к этому? Это часть ядра JSF, не так ли? Я заметил, что в моем JSF-осущ-1.2_13.jar :: META-INF/jsf_core.tld есть тег для setPropertyActionListener:

<tag> 
    ... 
    <name>setPropertyActionListener</name> 
    <tag-class>com.sun.faces.taglib.jsf_core.SetPropertyActionListenerTag</tag-class> 
    <body-content>empty</body-content> 
    ... 
</tag> 

Кроме того, это можно найти в моем JSF-Facelets-1.1.14.jar :: ком/вС/Facelets/теги/JSF/ядро ​​/ CoreLibrary.java:

... 
this.addTagHandler("setPropertyActionListener", SetPropertyActionListenerHandler.class); 
... 

похоже, мои включены библиотеки должны быть достаточными. Любая идея, что здесь происходит? Нужно ли мне вернуться и получить степень в JSF, чтобы иметь возможность написать простой манекен?

ответ

1

Убедитесь, что объявление корня вашего faces-config.xml указано в соответствии со спецификацией JSF 1.2.

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"> 

Далее, binding="#{binding}" в вашем DataTable действительно выглядит не так, так как #{binding} кажется управляемый компонент.

+0

Я не знал об этом с лицами-config, имеющими версию = "1.2". Мне придется подождать до завтра, чтобы проверить это, так как я не сейчас перед кодом. Что касается связывания = "# {binding}, я делаю это, потому что этот facelet предназначен для включения в другую страницу с тегом , поэтому переменная привязки в этом коде ссылается на тот, который указан в этом теге. Спасибо за ваш ответ, и я обязательно обновлю это как ответ, если он будет работать. – Lucas

+0

Также 'xsi: schemaLocation' отличается. Что касается привязки, он должен ссылаться на' UIComponent' не управляемый компонент. Это действительно «UIComponent»? – BalusC

+0

Еще раз спасибо, я не заметил разницу в схеме. И да, это расширение HtmlDataTable, чтобы работать как привязка для моего льда: dataTable. – Lucas

1

Мне очень жаль отвечать на мой вопрос, тем более, что это была такая простая ошибка, но иногда нам просто нужно испортить и принять публичное унижение. Во всяком случае, короче говоря, его:

<f:setPropertyActionListener value="#{item}" target="#{binding.actionRow}" /> 

не

<f:propertyActionListener value="#{item}" target="#{binding.actionRow}" /> 

Надеюсь, это поможет кому-то еще в будущем ...

+0

О, мальчик, я тоже пропустил это. – BalusC

Смежные вопросы