<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无一区二区三区久久| 日韩免费高清一级毛片| 国产精品午夜免费观看网站| 日韩毛片免费在线观看| 亚洲一级毛片视频| 99精品视频在线观看免费专区 | 99精品视频在线观看免费播放| 久久乐国产综合亚洲精品| 成人免费的性色视频| 亚洲综合亚洲国产尤物| 特级精品毛片免费观看| 亚洲AV无码国产丝袜在线观看 | 亚洲无线观看国产精品| a一级爱做片免费| 亚洲中文字幕在线无码一区二区 | 亚洲人成无码网站在线观看 | 亚洲AV无码国产精品麻豆天美| 成人无遮挡裸免费视频在线观看| 亚洲AV无码一区二区三区人| 亚洲无码黄色网址| 一级做a爰性色毛片免费| 亚洲男人的天堂在线va拉文| 中文字幕免费在线看线人动作大片| 综合亚洲伊人午夜网 | 亚洲精品综合久久| 成人免费午夜在线观看| 日本高清高色视频免费| 精品日韩亚洲AV无码| 国产精品久久免费| 手机看片国产免费永久| 久久亚洲美女精品国产精品 | 国产亚洲?V无码?V男人的天堂| 毛片免费在线观看| 亚洲国产精品专区| 国产成人aaa在线视频免费观看| 特级毛片A级毛片100免费播放| 亚洲综合区小说区激情区| 日韩精品视频免费在线观看|