<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      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 ;
      回復  更多評論
      

    主站蜘蛛池模板: 国内少妇偷人精品视频免费| 国产成人亚洲综合无| 久久久久久久99精品免费观看| 亚洲国产a级视频| 男人免费视频一区二区在线观看| 日韩视频免费在线| 国产人成亚洲第一网站在线播放| 国产在线a免费观看| 亚洲视频手机在线| 黄页网站在线观看免费高清| 亚洲一卡二卡三卡| 91免费精品国自产拍在线不卡| 亚洲欧洲日本国产| 成年女人免费v片| 亚洲精品无播放器在线播放| 超pen个人视频国产免费观看| 久久久久久亚洲精品无码| 五月婷婷亚洲综合| 久久久久国色AV免费观看| 亚洲AV无码精品色午夜在线观看| 99re在线视频免费观看| 亚洲成无码人在线观看| 女人被男人桶得好爽免费视频| 亚洲Av永久无码精品一区二区| 亚洲精品线路一在线观看| a毛看片免费观看视频| 亚洲午夜精品国产电影在线观看| 国产一精品一AV一免费孕妇| 黄色网址在线免费观看| 亚洲国产精品成人久久| 91视频国产免费| xxxxxx日本处大片免费看| 亚洲国产一区在线| 青春禁区视频在线观看直播免费| 久久人午夜亚洲精品无码区 | 国产精品亚洲一区二区三区久久| 免费在线观看污网站| 大地资源网高清在线观看免费| 亚洲免费网站在线观看| 免费看一级做a爰片久久| 中文字幕乱理片免费完整的|