2010-12-07 7 views
0

私は仕事ができないようです。私は氷面と非常に単純な2つの列を使用しています。 1つは削除などのアクション、もう1つは文字列(正規表現を表す)を持つものです。右の行を削除するには、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を使用しています。私はそのライブラリーと選択し、「使用したワークスペースのメタデータ」を実行しているTomcatサーバーインスタンスを管理するためにIvyDEで日食を使用しています

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

:ここで私は私の依存関係を管理するために使用していますApacheのアイビーの設定ファイルです。間違ったバージョンのJSFを注入しているかもしれないEclipseやTomcatのことはありますか? Ivyに含まれているjsf-impl jarを見ると、そのjarにcom.sun.faces.taglib.jsf_core.SetPropertyActionListenerImplとSetPropertyActionListenerTagがあることがわかります。それらが必要とされるべきものでなければならないと私は理解しています。何か案は?私は何かを逃しているのですか、それとも単に狂っているのでしょうか?


EDIT:

今、私は本当にイライラ取得しています。 BalusCの提案に基づき、私はfaces-config.xmlを1.1dtdの代わりに1.2スキーマ定義を使用するように更新しました。これは役に立たなかった。だから私はより多くの情報を探し回っている。私は(this issue)に関する別のstackoverflow記事を見つけるが、新しいバージョンのjsf-facelets.jar(新しい/古いバージョンはリストされていない)を取得する以外の解決策はありませんでした。私は最新バージョンのrepo1.maven.org/maven2(1.1.14)を使用しています。だから、その前には行けない。私の新しい質問は、なぜfaceletsはこれと関係がありますか?そのJSFコアの一部はそうではありませんか?私は私のJSF-IMPL-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 :: COM /日/ Faceletsを/タグ/ JSF /コア/ CoreLibrary.java

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

私付属図書館は十分なものでなければならないように見えます。何がここで何が起こっている考えですか?単純なfaceletを書くためには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}ので、見ていないあなたのDataTableのbinding="#{binding}"は、管理対象Beanのようです。

+0

バージョン= "1.2"のfaces-configについてこれは分かりませんでした。私は現時点でコードの前にいないので、これをテストするために明日まで待たなければなりません。このfaceletは、タグを含む別のページに含まれるようになっているため、binding = "#{binding}"については、このコードのバインディング変数 – Lucas

+0

また、 'xsi:schemaLocation'も異なっています。バインディングに関しては、' xsi:schemaLocation'は ' UIComponent'はマネージドビーンではありません。実際には 'UIComponent'ですか? – BalusC

+0

もう一度、schemaLocationの違いに気づきませんでした。そして、はい、HtmlDataTableの拡張でice:dataTableのバインディングとして機能します。 – Lucas

1

私は本当に自分の疑問に答えるのが嫌いです。特にそれは簡単な間違いだったからです。しかし、時には公共の屈辱を覚えて受け入れる必要があることもあります。とにかく、長い話を短く、その:

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

ない

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

うまくいけば、これは将来的に他の誰かを助けます...

+0

ああ、私もこれを逃した。 – BalusC