[Logo] Enterprise Client Community
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: emillinger  XML
Profile for emillinger -> Messages posted by emillinger [1]
Author Message
Hi Daniel,

I've had the same problem quite some time ago. I wasn't able to program a general solution but managed to find a quick workaround by overriding the exporter (just as Björn mentioned):

Code:
     @Override
     protected Exporter createExporter() {
       return new Exporter() {
         /**
          * @param ci
          * @param nullValue
          * @param asDisplayString
          *          true ==> nice formatting of string, false ==> no formatting but native format ==> usable for sorting etc.
          * @return
          */
         protected String getToBeAccessedNodeStringValue(ColumnInfo ci, String nullValue, boolean asDisplayString) {
           if (ci.getSortreference() == null)
             return nullValue;
           try {
             FacesContext fc = FacesContext.getCurrentInstance();
             Object value;
             if (ci.getSortreference().equals("orderMesstartForSorting")) //TODO solve generically: don't take sortReference but valueExpression
               value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression("ppcd.startdate"));
             else
               value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression(ci.getSortreference()));
             if (value == null)
               return nullValue;
             if (asDisplayString) {
               String nodeExpression = "#{" + m_objectBinding + ".toBeAccessedNode}";
               return ValueManager.convertObject2DisplayString(value, ci.getFormatValue(nodeExpression), ci.getFormatmaskValue(nodeExpression),
                   ci.getTimezoneValue(nodeExpression), true);
             } else
               return ValueManager.convertObject2ValueString(value);
           } catch (Throwable t) {
             CLog.L.log(CLog.LL_WAR, "Problems accessing value via sortreference: " + ci.getSortreference());
             return nullValue;
           }
         }
       };
     }
 


Regarding the original CC-implementation, I only changed these 4 lines of code:

Code:
 if (ci.getSortreference().equals("orderMesstartForSorting")) //TODO solve generically: don't take sortReference but valueExpression
               value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression("ppcd.startdate"));
             else
               value = ExpressionManagerV.getValueForExpressionString(fc, getToBeAccessedNodeExpression(ci.getSortreference()));
 


where "orderMesstartForSorting" is the sortreference and "ppcd.startdate" is the value to be displayed.

Regards, Ernst
 
Profile for emillinger -> Messages posted by emillinger [1]
Go to:   
Powered by JForum 2.1.6 © JForum Team