voyent
Messages posted by: JoeK  XML
Profile for JoeK -> Messages posted by JoeK [30] Go to Page: 1, 2 Next 
Author Message
We're seeing the same problem. Any resolution?

For now we're rolling back to 1.6.1
The scenario we have is something like this:

We have a DataTable with check boxes, output text, input text, and command links. You can click on the command link to bring up a form to edit the table row (don't ask why we didn't just allow for editing on the table..complicated explaination).

So anyway, when you would modify the entry from the form, the changes would be saved to the database and to the DataTable's data as desired, but the changes would not be reflected in the DataTable page. It would still contain the original, unedited data.

After a whole lot of playing with this problem, including following the directions of a lot of posts here, and at the MyFaces Wikii, what finally did the trick in this case was to basically blow the table's backing bean out of the session when the form edit is complete so that IceFaces has to recreate it.

I did this a little something like this:

Code:
    /**
      * Method to get the session from the FacesContext
      *
      * @return HttpSession
      */
     public static HttpSession getSession() {
         FacesContext ctx = FacesContext.getCurrentInstance();
 
         ExternalContext externalContext = null;
 
         if (null != ctx) {
             externalContext = ctx.getExternalContext();
         }
         HttpSession session = null;
         if (null != externalContext) {
             session = (HttpSession) externalContext.getSession(false);
         }
         return session;
     }
 
     public static void killTable(String managedBeanName) {
         HttpSession session = getSession();
         if (null != session) {
             session.removeAttribute(managedBeanName);
             session.removeAttribute("1/com.icesoft.faces.sessionAuxiliaryData");
         }
     }
 


Just pass the managedBeanName as defined in your faces-config.xml file, and it will tear that sucker right out of the session and rebuild the table from the ground up. Works every time. And I didn't notice any real obvious performance hit.

Hope that helps someone.

JoeK
I have found that using columnStyles and ice:columns together does not work. I have also found some posts here that suggest this to be true.

So...any suggestions for having different styles per column while using ice:columns?

The problem here is that the number of columns isn't known until runtime, so I even went so far as generating what columnStyles uses dynamically at runtime, but, yep, that didn't work.

So let's say I want any column that is representing a ColumnSpacer object (could be anything) to have, say, a black background...how would I do that?

Thanks for your help.

Joe

margonz wrote:
I talked to tech support and they helped me with the issue. Basically, setting the connectionTimeout contect-param DOES work, however, the client must clear his/her cache before the new value is set. Anyway, this is how I fixed my problem. If you set a new connectionTimeout and it doesn't seem to be working then clear your browser cache and try again.

 


Great. Thanks!

That browser cache gets me every time. Sometimes it really sucks to be a developer :-)
Anyone know if this has been fixed in 1.6.0?

Thanks!
Hi Philip,

I think the blind-up/down and drop-in/out effects would work fine.

Is there an example anywhere of how to do AJAX Push to do the effects? I see plenty of examples on how to do this based on a user event (onclickeffect, etc.) but nothing on how to just trigger an event from the server.

I imagine the webmail or auction monitor applications would have to do something like this, so I'll dig in to those, but if you have any easier to dig through examples that would be great.

Thanks for your help.
I'm trying to create a notification panel that will display a message initiated by the server, ever so briefly, and then go away. Much like the "new mail" notification you see in Outlook or Thunderbird.

Another sample can be found by going here http://extjs.com/deploy/ext/docs/index.html clicking on "Dialogs" then "MessageBox and Progress", and then click the "prompt" button, fill in your name, and watch the notification at the top of the screen.

So what I'm thinking about doing is firing off a "Slide Down" event when a "showNotification" method is called server-side, showing the message for about 2 or 3 seconds, and then doing maybe a "Fall Out" event.

Any recommendations on how to accomplish this? (One "easy" way would be to use the EXT JavaScript and just calling that from the server, but that's not very JSF, now is it?)

Thanks!
I'm sorry to hear that ;-)

Maybe it's an issue with the particular build I'm using, or something else odd in our codebase. (I'm using ICEFaces 1.6.0 DR5).

I'll post if I figure out what's going on.

Thanks again!

Joe
Hi Philip,

Thanks for your help.

It looks like the primary difference between what you did (which worked for me) and what I am trying to do (which doesn't work for me) is that you are sending in a static value of "myId" and I'm sending in a binding to a backing bean "#{myBean.id}".

What I find interesting is that while #{myBean.id} is not evaluated properly in the id attribute of the table, it is evaluated right if I put it in another tag (such as ice:outputText), or another attribute.

Could it be that the ID attribute is read before facelets does its magic with ${myBean.id}? In other words, are the id's of components defined before anything else happens?

Thanks again for your help.

JoeK
It just struck me while looking at my code that I posted an alternative version of the table. That was an attempt to work around the problem. The original dataTable tag looks like this:

Code:
<ice:dataTable var="item"
                     id="${tableId}Table"
                     value="${tableBean.rowDataModel}"
                     sortColumn="${tableBean.sortColumnName}"
                     sortAscending="${tableBean.ascending}"
                     rowClasses="oddRow,evenRow"
                     columnClasses="column2"
                     rows="${tableBean.recordsPerPage}" cellpadding="0">


Exact same results in either case, however, the ID is simply "Table"
This is kind of a weird one. I've created some compound components using IceFaces. Very simply, I wrapped a custom dataTable into a simple tag.

That simple tag looks a little something like this:

Code:
<g:dataTable tableBean="#{myTableBean}" tableId="myTableId"/>
 


Then the xhtml file that defines this tag looks a little something like this:

Code:
<ice:dataTable var="item"
                    id="${tableBean.id}Table"
                    value="${tableBean.rowDataModel}"
                    sortColumn="${tableBean.sortColumnName}"
                    sortAscending="${tableBean.ascending}"
                    rowClasses="oddRow,evenRow"
                    columnClasses="column2"
                    rows="${tableBean.recordsPerPage}" cellpadding="0">
 
         <ice:column rendered="${tableBean.grouped}">
             <f:facet name="header">
                 <ice:outputText value=" "/>
             </f:facet>
             <ice:commandButton image="${tableBean.collapseImage}"
                                actionListener="${tableBean.toggleCollapse}"
                                alt="${tableBean.id}_row${tableBean.rowDataModel.rowIndex}" styleClass="tableHeader"/>
         </ice:column>
 
         <ice:columns value="${tableBean.columnDataModel}" var="column">
             <f:facet name="header">
                 <ice:panelGroup id="panelGroup">
                     <ice:commandSortHeader columnName="${column.columnKey}" arrow="true"
                                            rendered="${tableBean.sortable}">
                         <ice:outputText value="${column.displayText}"
                                         styleClass="tableHeader"/>
                     </ice:commandSortHeader>
                     <ice:outputText value="${column.displayText}" rendered="${!tableBean.sortable}"
                                     styleClass="tableHeader"/>
                 </ice:panelGroup>
             </f:facet>
 
             <!-- display the table cell values-->
 
             <!-- display the table cell values-->
             <ice:panelGroup style="${tableBean.cellStyle}">
                 <ice:inputText alt="${tableBean.cellId}"
                                rendered="${tableBean.inputText}"
                                partialSubmit="true"
                                value="${tableBean.cellValue}"
                                size="${column.maxFieldWidth}"
                                onfocus="this.select()"
                                validator="${column.validate}"/>
                 <ice:selectBooleanCheckbox rendered="${tableBean.checkbox}" value="${tableBean.cellValue}"/>
                 <ice:outputText rendered="${tableBean.outputText}" value="${tableBean.cellValue}"/>
                 <ice:commandLink title="${tableBean.cellId}" value="${tableBean.cellValue}"
                                  actionListener="${tableBean.linkListener}" rendered="${tableBean.outputLink}"
                                  action="${tableBean.linkAction}" style="text-decoration:underline"/>
                 <ice:selectOneMenu rendered="${tableBean.selectList}" partialSubmit="true"
                                    value="${tableBean.cellValue}">
                     <f:selectItems value="${tableBean.cellChoices}"/>
                 </ice:selectOneMenu>
             </ice:panelGroup>
         </ice:columns>
     </ice:dataTable>


Now my problem is with the id being passed to the datatable. It is always, 100% of the time, empty. So instead of getting something like "myTableIdTable" for the table's ID, I'm getting "Table" as the ID for every table.

So? Well, that causes a problem if I'm wanting to display multiple tables on the same page. I got around this problem by wrapping my tag in another tag, and giving that tag the ID I want, but it's still a problem I'd like to resolve.

So...any idea why the id isn't getting resolved? If I put that value in any other place than the id, it gets resolved just fine.

Strange...strange indeed.

Thanks!

Joe
Thanks, Adnan.

We'll get that a try. It's just clever enough that it should work :-)

Not being able to do the navigation is a minor drawback for us in this case.

Thanks again.

Joe
I want to, when the user clicks on a link, run an action (specifically we are generating a report using JasperReports, which produces a PDF, Excel, HTML or text file) and then pop up the results of that action in a new window (or tab, 'cause Firefox rules!)

using a commandLink, there's no target attribute. Using a outputLink, there's no action attribute. Any recommendations on how to deal with this?

(We had thought about using the outputLink to pop up a page that knows how to call the action, but that didn't seem to want to work...or at least we couldn't figure out how to make it happen.)
Randy,

I was seeing this problem pretty consistently when I was using MyFaces and IceFaces together. When I switched to using Sun's JSF implementation with IceFaces, this problem went away.

Not sure if that's the real why on this problem, and it did introduce some other weirdisms, but I just thought I'd point out another possible work around.

Good luck!

Joe
Ok, so I'm trying to use a horizontal menuBar, and I'm obviously a little loose in the noodle on this one.

If I just thrown the menu on a page, everything is peachy, but the second I try to position it in a specific spot on the screen, things go flaky.

I've tried positioning the menu in a couple of different ways. First I tried in a div tag, like...

<div id="menuDiv">...menu stuff...</div>

And also by adding the style info to the menuBar itself, like...

<ice:menuBar id="menuDiv"

Where my CSS looks like:

#menuDiv {
float: left;
background-color: #006699;
position: absolute;
left: 0px;
top: 96px;
}

Oddly enough, the menuBar positions where I want it, but the menus/submenus under each menu appears, in this case, about 96px below the menuBar. If I change top to 20px, the menus/submenus appears 20px below the menuBar.

Any ideas on how to both position the menu where I want it, and have the menus/submenus below it show up in the right place?

Thanks for your help.

Joe
 
Profile for JoeK -> Messages posted by JoeK [30] Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.7ice © JForum Team