ラベル PrimeFaces の投稿を表示しています。 すべての投稿を表示
ラベル PrimeFaces の投稿を表示しています。 すべての投稿を表示

2016年2月22日月曜日

java.lang.IllegalArgumentException: Setter not found for property class


【エラー】
java.lang.IllegalArgumentException: Setter not found for property class
【概要】
ローカルでは出なかったが、サーバーでデプロイすると発生


【原因】
jsfもしくはprimefacesのタグにclassを指定したことが原因の模様
なぜローカル実行で発生しないのかは不明。
指定する場合はstyleClassを指定しろとのこと。
 
サンプルコード
a
b
c
【残課題】
htmlのタグを使うときはとりあえず、
passThroughをつけておいたほうがよさそう。
というか今回はclassは削除して、それ以外は全部つけてからやったので、実際にどのタグで起きたのかは不明・・・
もしかしたらprimefacesだけ?

【参考】
http://stackoverflow.com/questions/16935343/java-lang-illegalargumentexception-setter-not-found-for-property-class

2016年1月21日木曜日

PrimeFacesのrenderedをOFFにしたタグを、AJAX(update)で更新しても描画されない!!

【概要】
PrimeFacesのrenderedをOFFにしたタグを、AJAX(update)で更新しても描画されない!!

【詳細】
概要の通り。renderedに要素が空かどうかで表示非表示を切り替えようとしたが、updateで更新しても表示されない。
調べてみると、どうやらrenderedがfalesの場合、そもそもブラウザ上に表示されない。つまり、「タグも生成されない」
なので、いくらajaxで更新しても何もおこらないと・・・

update要素で存在しないIDを指定するとエラーになるがそれはあくまでfaceletのチェックのようなのでスルーされる模様。

ダメなコード
<p:fileUpload fileUploadListener="#{controller.handleFileUpload}" mode="advanced" dragDropSupport="true"
                  update="messages,buttonEffect,labelFileName" sizeLimit="100000" allowTypes="/(\.)(csv)$/"/>
    <p:panelGrid columns="2">
        <p:outputLabel value="#{disp.Name}"/>
        <p:outputLabel id="labelFileName" value="#{controller.file.fileName}" rendered="#{!empty controller.file}"/>
    </p:panelGrid>

正解サンプル
<p:panel visible="#{!empty controller.file}">
<p:outputLabel id="labelFileName" value="#{controller.file.fileName}" />
</p:panel>

PrimeFacesのpanelタグにはvisible属性があるようなので↑のようなコードであれば表示非表示を簡単に切り替えられる。
あとは、styleにdisplayかvisibleをしていするか。(true:falseで指定できないのでめんどくさいかな)

【残課題】
なし

2015年10月30日金曜日

PrimeFacesコンポーネントが動かない!

【エラー】
PrimeFacesが動かない!
原因はバージョンの異なるjqueryの混在。
【概要】
(参考サイト)
http://www.primefaces.org/showcase/ui/message/growl.xhtml

で書かれている通りに、ソースを書いても想定通りに動かない。
具体的にはSelectOneMenuとcalendar。
画面にコンポーネントは表示されるがコンボボックスやカレンダーがポップアップ表示で出てこない。


 【詳細】
なし
<p:calendar id="saledate" value="#{aaa.sampleDate}"></p:calendar>
<p:selectonemenu id="seriesName" value="#{aaa.selected.titleId}">
<f:selectitems itemlabel="#{title.titleName}" itemvalue="#{title.titleId}" value="#{aaa.titleMsts}" var="title">
</f:selectitems>
</p:selectonemenu>


【原因】
自分が明示的に読み込んでいるjqueryとprimeFacesが独自に読み込んでいるjqueryの
バージョンが異なっており、primeFacesのイベントがことごとく無効になっていた。

primeFacesを使うときは注意。

【残課題】
なし