何も気にせずに使ってたら、ダイアログ自体もブロックされて何も触れない状態になった!
java - Modal ConfirmDialog over modal Dialog -> everything is blocked - Stack Overflow
appendToBody="true" で回避出来るよと。
最新では、append="@(body)" に替わってます。
ここまでは良かったんですが、この対応をすると dialog 上の commandButton から actionListener が呼ばれなくなった!
http://forum.primefaces.org/viewtopic.php?f=3&t=34397
commandButton に process="@this" 付けたらOKでした。
これで OK かと思ったら、actionListener は呼ばれたけど、form の中身がサーバーに飛んでない!
xhtml を次のように書いたとして、
... <h:form id="form"> ... <p:dialog appendTo="@(body)"> ... </p:dialog> </h:form> ...
吐かれる html は、
<form ~> ... </form> ... <div> ... <!-- dialog の中身 --> </div>
となっていて、dialog の中身が form タグ内に居なくなってました。
そりゃサーバーに飛ばない訳だ。
という訳で対応策としては、<p:dialog> の中に <h:form> を書くようにしましょう。
<p:dialog> <h:form> ... </h:form> </p:dialog>
appendToBody 使うときは、dialog の中に form 書こうねと Primefaces user guid P-163 の Tips にちゃんと載ってました。
ちゃんとドキュメント読めということですね。