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#a11209861
Sent from the Shale - User mailing list archive at Nabble.com.