<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    Let's say that when a user clicks on something, perhaps selecting something from a DataTable or DataGrid, you want to call some server side code, and then popup a modal panel which needs to show content based on the new state setup by your server side call. In my case I have a DataGrid showing a number of items, and when a user clicks on an item I want to set the current selected item on a Seam component on the server, and then popup a modal panel to display detailed information about the item, and provide the user some actions within the modal panel.

    Looking at the solution it seems so simple, but for some reason it took me hours of trying different combinations, orders, tags, JavaScripts, etc... before I could get this to work correctly. I had the panel appearing with the old data, or appearing with the old data and then disappearing completely, only to show the so called new data the next time I clicked on an item, or rendering on the page itself below the footer, or not popping up at all, or popping up with null data, or.... So I'm posting it up here for myself and anyone else who runs into issues.

    First, create your modal panel (rich:modalPanel). I do this in a separate .xhtml file, as I will use the same model panel in various pages throughout the site. In your modal-panel.xhtml file (or whatever you choose to name it), start with a <ui:composition> tag, define your RichFaces xml namespace (and any other JSF libs you'll be using), and then setup your <rich:modalPanel>. You need to give the modalPanel a unique id, in this case we'll call it "myModalPanel".

    <rich:modalPanel id="myModalPanel" autosized="true" zindex="2000">

    Inside your modalPanel tag, you need to define an inner div. This is the div which you will be rerendering after the server action is complete. I use tags, as I'm using Seam. Ensure that any references to backing beans or data that you want refreshed are within these div tags. You must give this div a unique id as well, in this case we'll call it "myModalDiv".

    <s:div id="myModalDiv">

    The one limitation that I've run into here, and if you know how to solve this, please let me know, is that the <f:facet> tags for your header text and controls can't be inside this div, and you can't put the div around the whole modalPanel (or it makes the panel disappear when you rerender). As such you can't make anything from the <f:facet>s be updated on rerender. This is preventing me from having the modal panel header displaying the current selected item's name. Not great, but not the end of the world.

    So inside this div you have your dynamic output. I have lots of

    <h:outputText value="#{backingBean.selectedItem.property}" />

    type entries in mine.

    On your actual page where you will be displaying the modal panel from you need to include the modal-panel.xhtml file, I use a:

    <a:include viewId="/modal-panel.xhtml" />

    Then, I have my page, which includes a rich:dataGrid, and inside it has an <a:commandLink> which creates the AJAX clickable item. This commandLink has to call the backend action, display the modal panel, and rerender your div.

     
    <a:commandLink id="showItem" action="#{backingBean.setSelectedItem(item)}"
    oncomplete="Richfaces.showModalPanel('myModalPanel',{width:550, top:200});"
    reRender="myModalDiv">

    Click Here!
    </a:commandLink>
     

    This makes the panel display, and then the new content is rendered in the panel. It seems to work just how I wanted it to. With the minor annoyance of having to use a static modalPanel header.

    posted on 2009-03-05 09:48 seal 閱讀(681) 評論(1)  編輯  收藏 所屬分類: Seam

    評論

    # re: Displaying and Rerendering a RichFaces ModalPanel from a commandLink 2009-06-09 16:04 xx
    Hello,Sealyu
    I have some problems with modalpanel.I have two pages which will call a same modalpanel page.I click button to show modalpanel .then click a specail button on modalpanel, and now ,i need to return somevalue to my mainpage;but i don't how to return ;
      回復(fù)  更多評論
      

    主站蜘蛛池模板: 久久久久久免费视频| 亚洲成av人在线观看网站| 亚洲AV永久青草无码精品| 亚洲Av无码乱码在线播放| 国产精品免费电影| 免费看的黄色大片| 国产精品高清全国免费观看| 免费精品一区二区三区在线观看 | 边摸边脱吃奶边高潮视频免费| 亚洲成AV人影片在线观看| 国产精品亚洲一区二区三区在线观看 | 免费毛片在线看片免费丝瓜视频| 香蕉97超级碰碰碰免费公| 日韩在线免费视频| 久久久久久99av无码免费网站| 一二三四影视在线看片免费 | 97无码人妻福利免费公开在线视频| 国产一级一毛免费黄片| 在线成人精品国产区免费| 日本免费人成视频在线观看| ww4545四虎永久免费地址| 中文字幕av无码无卡免费| 免费精品一区二区三区在线观看| 免费a级毛片永久免费| 亚洲一区二区三区免费| 亚洲AV午夜成人影院老师机影院 | 日本免费高清一本视频| 亚洲成AⅤ人影院在线观看| 亚洲伊人久久成综合人影院| 亚洲国产精品VA在线看黑人| 久久精品蜜芽亚洲国产AV| 久久精品国产亚洲AV久| 亚洲av无码有乱码在线观看| 免费人成网站永久| 182tv免费视频在线观看| 色老头永久免费网站| 日本免费一区尤物| 亚洲熟妇av一区二区三区| 中文字幕亚洲免费无线观看日本| 亚洲精品在线免费观看视频| 亚洲精品蜜夜内射|