XPages EL: adding a condition to select field name -


i using sample database book "mastering xpages - second editon" (chap11e2b.nsf), created extended rich text editor. there managed bean used get/set field value. in sample, custom control using

<mxpd2:inputrichtext id="inputrichtextextended"             style="width:100%" htmlfilter="identity"             htmlfilterin="identity" disablemodifiedflag="false"             htmlconversionwarning="nowarning">              <mxpd2:this.value><![cdata[#{rtebean['pagedocument.body']}]]></mxpd2:this.value> ... 

i need check field know field use in control, standard "body" field or "bodyhtmlmime" in case document has flag (field called "converted") set "1".

how can done in el language, or how can use rtebean.['pagedocument.body'] in ssjs?

worst case create 2 controls , hid eacocrding flag, i'm sure not necessary sit can done @ data property level.

thanks :)

edit:

my code this:

<xp:text escape="true" id="bodyfieldname">     <xp:this.value><![cdata[#{javascript://sessionscope.bodyfieldname = 'pagedocument.body'; viewscope.bodyfieldname = pagedocument.getitemvaluestring("v2_convertedtomime") == "1" ? "pagedocument.bodyhtmlmime" : "pagedocument.body"; viewscope.bodyfieldname;        }]]>     </xp:this.value> </xp:text>  <mxpd2:inputrichtext id="inputrichtextextended"     style="width:100%" htmlfilter="identity" htmlfilterin="identity"     disablemodifiedflag="false" htmlconversionwarning="nowarning"     value="#{rtebean[viewscope.bodyfieldname]}">      <xp:this.converter>         <xp:converter             converterid="inputrichtextconverter">         </xp:converter>     </xp:this.converter>      ... 

here error code:

1/28/16 1:45 pm: exception thrown context path: /dev/x_docclqc.nsf page name: /page.xsp javax.faces.facesexception: java.lang.stringindexoutofboundsexception     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:865)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.extlib.component.layout.uivarpublisherbase.invokeoncomponent(uivarpublisherbase.java:155)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uidatapanelbase.invokeoncomponent(uidatapanelbase.java:416)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:878)     @ com.ibm.xsp.component.uiviewrootex.invokeoncomponent(uiviewrootex.java:1552)     @ com.ibm.xsp.util.ajaxutilex.renderajaxpartiallifecycle(ajaxutilex.java:188)     @ com.ibm.xsp.webapp.facesservletex.renderajaxpartial(facesservletex.java:249)     @ com.ibm.xsp.webapp.facesservletex.serviceajaxpartialview(facesservletex.java:200)     @ com.ibm.xsp.webapp.facesservletex.serviceajaxpartialviewsync(facesservletex.java:176)     @ com.ibm.xsp.webapp.facesservletex.serviceview(facesservletex.java:155)     @ com.ibm.xsp.webapp.facesservlet.service(facesservlet.java:160)     @ com.ibm.xsp.webapp.facesservletex.service(facesservletex.java:138)     @ com.ibm.xsp.webapp.designerfacesservlet.service(designerfacesservlet.java:103)     @ com.ibm.designer.runtime.domino.adapter.componentmodule.invokeservlet(componentmodule.java:576)     @ com.ibm.domino.xsp.module.nsf.nsfcomponentmodule.invokeservlet(nsfcomponentmodule.java:1335)     @ com.ibm.designer.runtime.domino.adapter.componentmodule$adapterinvoker.invokeservlet(componentmodule.java:853)     @ com.ibm.designer.runtime.domino.adapter.componentmodule$servletinvoker.doservice(componentmodule.java:796)     @ com.ibm.designer.runtime.domino.adapter.componentmodule.doservice(componentmodule.java:565)     @ com.ibm.domino.xsp.module.nsf.nsfcomponentmodule.doservice(nsfcomponentmodule.java:1319)     @ com.ibm.domino.xsp.module.nsf.nsfservice.doserviceinternal(nsfservice.java:662)     @ com.ibm.domino.xsp.module.nsf.nsfservice.doservice(nsfservice.java:482)     @ com.ibm.designer.runtime.domino.adapter.lcdenvironment.doservice(lcdenvironment.java:357)     @ com.ibm.designer.runtime.domino.adapter.lcdenvironment.service(lcdenvironment.java:313)     @ com.ibm.domino.xsp.bridge.http.engine.xspcmdmanager.service(xspcmdmanager.java:272) caused by: java.lang.stringindexoutofboundsexception     @ java.lang.string.substring(string.java:1111)     @ mxpd2.component.inputrichtext.getobjectbinding(inputrichtext.java:53)     @ mxpd2.component.inputrichtext.processajaxrequest(inputrichtext.java:99)     @ com.ibm.xsp.util.ajaxutilex$1.invokecontextcallback(ajaxutilex.java:194)     @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:862) 

inputrichtext's value has el because uses getter , setter of rtebean.

calculate field name , put viewscope variable.

use viewscope variable field name in el:

<xp:text     escape="true"     id="computedfield1">     <xp:this.value><![cdata[#{javascript:         viewscope.fieldname = document1.getitemvaluestring("converted") == "1" ? "document1.bodyhtmlmime" : "document1.body1";          ""}]]></xp:this.value> </xp:text> <xp:div themeid="container" style="width:800px">     <mxpd2:inputrichtext id="inputrichtext1"         value="#{rtebean[viewscope.fieldname]}"> 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -