ok i solve the Problem. i goes like this: 1.get dataClassName instance 2.make instance of "another Bean" using the getBean("another Bean"); 3. get the Row index from UIData something Like(dbserver.setId(getServerdata().getRowIndex());) 4. get the appropriate "another Bean" Object from a "List" setted in Dialog action wich provide the datatable. 5...do something... session.update(appropriate "another Bean" Object from a "List"); 6.close() the session.
Craig merci for your advice!! Sam samju wrote: > > > > craigmcc wrote: >> >> On 6/19/07, samju <[EMAIL PROTECTED]> wrote: >>> >>> public class Login extends AbstractViewController{ >>> public String editDataTable(){ >>> FacesContext context = FacesContext.getCurrentInstance(); >>> DialogContext dcontext = DialogHelper.getDialogContext(context); >>> Object currentuser = ((appBackingBean) >>> dcontext).getServerModel().getRowData(); >>> (this cause a Class CastException)OR this cause a NullPointerException >>> this.crudServer = (Server) >>> getappBackingBean().getServerModel().getRowData(); >>> ... >>> ...... >>> return null; >>> } >>> } >>> how to retriev the RowData of a datatable? >>> how to work with dcontext.setData? >> >> It is not possible to provide you any specific advice without an >> understanding of the code in your application. But the following >> general thoughts might help you understand what the "data" property of >> a DialogContext instance was intended to be used for. >> >> The basic idea is that, when you have a "conversation" with a user >> (i.e. something that takes more than one request), you want the >> equivalent of a "scope" that lasts longer than a single request, but >> shorter than an HttpSession, which typically does not go away until >> the user logs off or the session times out. In the absence of a >> change to the servlet specification to provide such a scope (something >> along these lines *might* happen in a future Servlet spec, or perhaps >> in the Web Beans spec, JSR-299). The "data" property is designed to >> provide you a place to deal with this requirement. The DialogContext >> instance is thrown away when the dialog is completed -- therefore, so >> will the "data" object that you put here. >> >> There are different strategies to consider for using "data": >> >> * By default, unless you do something different, the Dialog framework >> will provide you an object of type "java.util.Map" here. That means, >> you >> can stuff whatever "state" information you need into the Map, and >> easily >> access it with EL expressions like "#{dialogScope.data.foo}" for key >> "foo". >> The disadvantage is that you give up type checking on the name/value >> pairs. >> >> * For many applications, the state information I might want to keep is >> well >> understood. A shopping cart is a classic example of this -- it should >> contain >> a list of Item objects, and (during the checkout process itself) >> things like the >> credit card number and the expiration date. If you can encapsulate >> this kind >> of information into a JavaBean, it is very easy to build unit tests >> to validate the >> behavior of your shopping cart. >> >> * If you want a JavaBean to represent your state information, the easiest >> thing >> to do is to declare the fully qualified class name of your JavaBean >> in the dialog >> configuration information. But this only guarantees that the bean >> instance >> gets *created* -- not that it gets *populated*. For that, I >> generally define an >> action state as the first state of my dialogs that goes and fills in >> the necessary >> details (copying stuff from request scope or session scope attributes, >> as >> needed). >> >> * It is also possible that you might need a more "intimate" understanding >> of >> the lifecycle of your dialog with a particular user. If you make >> your JavaBean >> class implement the DialogContextListener interface, the setData() >> method >> will notice this and automatically register you as a listener, so you >> can hear >> about interesting events like "we just switched from state X to state >> Y", and >> "we just finished this dialog". >> >> I'm afraid any more specific advice will require more detailed knowledge >> about: >> >> * What are you trying to do? >> >> i want to update the Content of a datatable: >> <t:dataTable var="result" value="#{dialogScope.alist}" >> preserveDataModel="true" rowId="#{dialogScope.id}"> >> ... >> <h:column> >> <f:facet name="header"> >> <t:commandSortHeader columnName="servername" arrow="false"> >> <h:outputText value="URL"></h:outputText> >> </t:commandSortHeader> >> </f:facet> >> <h:inputText value="#{result.sname}" //this value had to be updated! >> rendered="#{result.editable}"></h:inputText> >> </h:column> >> ....... >> <h:column> >> <f:facet name="header"> >> <t:commandSortHeader ...> >> <h:outputText value="refresh"></h:outputText> >> </t:commandSortHeader> >> </f:facet> >> <t:commandButton action="#{worker.updateserver}" value="update" >> disabled="#{not result.editable}"> >> </t:commandButton> >> </h:column> >> >> </t:dataTable> >> >> where do the Value of "#{dialogScope.alist}" comes from? >> >> public String bricketWood(){ >> >> ...... >> FacesContext context = FacesContext.getCurrentInstance(); >> DialogContext dcontext = DialogHelper.getDialogContext(context); >> appBackingBean currentuser = (appBackingBean) dcontext.getData(); >> ............ >> Query qs = sess.createQuery("from Server"); >> qs.setProperties(Server.class); >> List ID_UserID_ServerName_Status_Roles = qs.list(); >> currentuser.setAlist(ID_UserID_ServerName_Status_Roles); >> ....... >> >> return "you can watch the Wood" >> } >> >> i use the fully qualified class name of appBackingBean in the Dialog.xml >> (otherwise i can´t run the Dialog! i get use to this) >> >> now >> public class Login extends AbstractViewController implements >> Serializable{ >> .... >> private Server crudServer; >> private ListDataModel model; >> ..... >> public String updateserver(){ >> >> 1.had to capture the rowdata from (<t:dataTable var="result" >> value="#{dialogScope.alist}" ) >> 2.then set Server Bean properties >> 3.open hibernate session, begin transaction, use hibernate session >> facilities to save,update, merge, delete or add data. >> 4.return null; still using the same view >> i tried "t:updateActionListener" tag wich set the crudServer.id of our >> backing bean and so i can user crudServer.id in this action....didn´t >> work >> and as i mentioned in the message befor the usual way to retriev the >> content of the rowdata did´t work >> } >> } >> * What did you expect to happen? >> i expect to update my database >> >> >> * What actually happened? >> when the user enter the "edit mode" and make some changes, the new >> entries got saved "client Side"as long as the Dialog exist! even if the >> user left the "edit mode". the value="#{dialogScope.alist}" show the new >> user entries.so from the frontend view it look like every thinks going >> well. >> >> >> can You please give a example how to do this" >> generally define an action state as the first state of my dialogs that >> goes and fills in the necessary details " >> i work within one Dialog. so at the begining a action will take place and >> launch the dialog then another action will deliver the dataBase entries >> for each user, the user make some changes and logout, dialog end. >> >> >> Sam >>> sam >> >> Craig >> >> > > -- View this message in context: http://www.nabble.com/DialogContext-and-dataTable-tf3949337.html#a11218586 Sent from the Shale - User mailing list archive at Nabble.com.