You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Andrew Robinson <an...@gmail.com> on 2006/11/29 20:52:44 UTC

java.lang.IllegalArgumentException: Value is no String

I am getting a bit stuck on this one exception. I have two
selectOneRadio components within an included facelet (source file)
that bind to a property on a facelet attribute. The value is a custom
bean with string properties and the select items have string values,
so no converter should be needed. What is odd is that this behavior is
not constant.

Setup:
index.xhtml defines this component:
        <ost:liveReportFilterDialog
          id="liveReportFilterDlg"
          ajaxZone="reportListZone"
          rendered="#{liveReportBean.filterDialogVisible}"
          onAcceptListener="#{liveReportBean.filterDialogAccepted}"
          onCancelListener="#{liveReportBean.filterDialogCanceled}"
          value="#{liveReportBean.filter}" />

It is this "value" that I use within the "liveReportFilterDialog.xhtml":

  <t:selectOneRadio
    id="#{id}TypeOptions"
    value="#{value.typeText}"
    layout="pageDirection"
    required="true">
    <f:selectItem
      itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
      itemValue="osoft/livechart" />
    <f:selectItem
      itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
      itemValue="osoft/livereport" />
    <f:selectItem
      itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
      itemValue="osoft/liveschedule" />
  </t:selectOneRadio>

The other radio is:

  <t:selectOneRadio value="#{value.ownerStr}"
    layout="pageDirection">
    <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
      itemValue="ALL" />
    <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
      itemValue="CURRENT_USER" />
  </t:selectOneRadio>


This dialog is usually not rendered, I change the value that the
rendered attribte points to in an AJAX call ActionListener method.
When I click the show, it works. Then, I click the cancel (close the
dialog), still okay, but when I try to open the dialog again (3rd AJAX
call) I get the following exception:
java.lang.IllegalArgumentException: Value is no String
(class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
and component zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
path: {Component-Path : [Class:
javax.faces.component.UIViewRoot,ViewId:
/pages/liveReport/index.xhtml][Class:
javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
zfpPanel][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
zfpContentCell][Class:
com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
liveReportFilterDlg][Class:
com.outlooksoft.cpm.faces.controls.UIDialog,Id:
liveReportFilterDlgDialogControl][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
_gridBagPanelID_3][Class:
com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
_gridBagCellID_29][Class:
org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
liveReportFilterDlgTypeOptions]} does not have a Converter
        at org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
        at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
        at org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
        at org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90)
...

The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
to determine why it fails on this 3rd call and not 1 or 2. If I
refresh the page, the dialog is rendered & shown fine. I verified that
it isn't a problem with the message bundle (msg), as it still happens
if I hard code the itemLabel values.

I am on a 1.1.3 patched version of both Tomahawk and Core.

Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
class yet to find where it is coming from)

Thanks,
-Andrew

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Andrew Robinson <an...@gmail.com>.
Menu is the same as well:

public class HtmlSelectOneMenu
  extends org.apache.myfaces.component.html.ext.HtmlSelectOneMenu
{
  /**
   * @see javax.faces.component.UIInput#setSubmittedValue(java.lang.Object)
   */
  @Override
  public void setSubmittedValue(Object submittedValue)
  {
    if (submittedValue == RendererUtils.NOTHING ||
      submittedValue ==
org.apache.myfaces.shared_impl.renderkit.RendererUtils.NOTHING)
      submittedValue = null;
    super.setSubmittedValue(submittedValue);
  }
}


On 5/31/07, Andrew Robinson <an...@gmail.com> wrote:
> Yes, I extended the myfaces class to fix the bug:
>
> public class HtmlSelectOneRadio
>   extends org.apache.myfaces.component.html.ext.HtmlSelectOneRadio
> {
>   /**
>    * @see javax.faces.component.UIInput#setSubmittedValue(java.lang.Object)
>    */
>   @Override
>   public void setSubmittedValue(Object submittedValue)
>   {
>     if (submittedValue == RendererUtils.NOTHING ||
>       submittedValue ==
> org.apache.myfaces.shared_impl.renderkit.RendererUtils.NOTHING)
>       submittedValue = null;
>     super.setSubmittedValue(submittedValue);
>   }
> }
>
> On 5/30/07, Celso Nishioka <ce...@gmail.com> wrote:
> > Andrew, I'm having the same issue.
> >
> > Did you get it solved?
> >
> > Thanks.
> >
> >
> > On 11/29/06, Andrew Robinson < andrew.rw.robinson@gmail.com> wrote:
> > > No that hasn't changed, I just checked the source. If you look at the
> > > stack trace, somehow the value is an instance of
> > >
> > "org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1"
> > -- it
> > > is not null inside the
> > "RendererUtils.getConvertedStringValue" method.
> > >
> > > How in the world that happened is beyond me.
> > >
> > > -Andrew
> > >
> > > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > > > Andrew,
> > > >
> > > > Looking at the current code, it shouldn't throw that against a null
> > > > value. Maybe they've changed this since your version? Perhaps you could
> > > > try with the nightlies just to see if the same behavior happens?
> > > >
> > > > RenderUtils
> > > > ------------
> > > > public static String
> > getConvertedStringValue(FacesContext context,
> > > >
> > UIComponent component,
> > > > Converter converter, Object value) {
> > > >          if (converter == null) {
> > > >              if (value == null) {
> > > >                  return "";
> > > >              }
> > > >              else if (value instanceof String) {
> > > >                  return (String) value;
> > > >              }
> > > >              else {
> > > >                  throw new IllegalArgumentException(
> > > >                      "Value is no String (class=" +
> > > > value.getClass().getName() + ", value=" + value + ") and component "
> > > >                          + component.getClientId (context) + "with path:
> > "
> > > >                          + getPathToComponent(component)
> > > >                          + " does not have a Converter");
> > > >              }
> > > >          }
> > > >
> > > >          return converter.getAsString(context, component, value);
> > > >      }
> > > > -----------
> > > >
> > > > Maybe your version is missing the lines:
> > > >
> > > > if (value == null) {
> > > >         return "";
> > > > }
> > > >
> > > > Regards,
> > > >
> > > > Jeff Bischoff
> > > > Kenneth L Kurz & Associates, Inc.
> > > >
> > > > Andrew Robinson wrote:
> > > > > Yes that is correct, it was always null but only failed to render the
> > > > > 3rd request.
> > > > >
> > > > > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > > > >> Well the reason it doesn't work is because of the null.
> > > > >>
> > > > >> Are you saying it was set to null the whole time, and only failed on
> > the
> > > > >> 3rd request (after having canceled the dialog once)?
> > > > >>
> > > > >> Regards,
> > > > >>
> > > > >> Jeff Bischoff
> > > > >> Kenneth L Kurz & Associates, Inc.
> > > > >>
> > > > >> Andrew Robinson wrote:
> > > > >> > Found a work around -->
> > > > >> > if " value.typeText" is set to one of the values instead of null I
> > > > >> > don't get the exception. What I don't understand is why it works
> > the
> > > > >> > other times but not the 3rd AJAX call.
> > > > >> >
> > > > >> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> > > > >> >> I am getting a bit stuck on this one exception. I have two
> > > > >> >> selectOneRadio components within an included facelet (source file)
> > > > >> >> that bind to a property on a facelet attribute. The value is a
> > custom
> > > > >> >> bean with string properties and the select items have string
> > values,
> > > > >> >> so no converter should be needed. What is odd is that this
> > behavior is
> > > > >> >> not constant.
> > > > >> >>
> > > > >> >> Setup:
> > > > >> >> index.xhtml defines this component:
> > > > >> >>         <ost:liveReportFilterDialog
> > > > >> >>           id="liveReportFilterDlg"
> > > > >> >>           ajaxZone="reportListZone"
> > > > >> >>
> > rendered="#{liveReportBean.filterDialogVisible}"
> > > > >> >>
> > onAcceptListener="#{liveReportBean.filterDialogAccepted}"
> > > > >> >>           onCancelListener="#{
> > liveReportBean.filterDialogCanceled}"
> > > > >> >>           value="#{liveReportBean.filter}" />
> > > > >> >>
> > > > >> >> It is this "value" that I use within the
> > > > >> "liveReportFilterDialog.xhtml":
> > > > >> >>
> > > > >> >>   <t:selectOneRadio
> > > > >> >>     id="#{id}TypeOptions"
> > > > >> >>     value="#{ value.typeText}"
> > > > >> >>     layout="pageDirection"
> > > > >> >>     required="true">
> > > > >> >>     <f:selectItem
> > > > >> >>       itemLabel="#{
> > msg.liverep_filterdlg_typefilter_graph}"
> > > > >> >>       itemValue="osoft/livechart" />
> > > > >> >>     <f:selectItem
> > > > >> >>
> > itemLabel="#{msg.liverep_filterdlg_typefilter_report }"
> > > > >> >>       itemValue="osoft/livereport" />
> > > > >> >>     <f:selectItem
> > > > >> >>
> > itemLabel="#{msg.liverep_filterdlg_typefilter_schedule }"
> > > > >> >>       itemValue="osoft/liveschedule" />
> > > > >> >>   </t:selectOneRadio>
> > > > >> >>
> > > > >> >> The other radio is:
> > > > >> >>
> > > > >> >>   <t:selectOneRadio value="#{value.ownerStr}"
> > > > >> >>     layout="pageDirection">
> > > > >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all }"
> > > > >> >>       itemValue="ALL" />
> > > > >> >>     <f:selectItem
> > itemLabel="#{msg.liverep_filterdlg_item_owner}"
> > > > >> >>       itemValue="CURRENT_USER" />
> > > > >> >>   </t:selectOneRadio>
> > > > >> >>
> > > > >> >>
> > > > >> >> This dialog is usually not rendered, I change the value that the
> > > > >> >> rendered attribte points to in an AJAX call ActionListener method.
> > > > >> >> When I click the show, it works. Then, I click the cancel (close
> > the
> > > > >> >> dialog), still okay, but when I try to open the dialog again (3rd
> > AJAX
> > > > >> >> call) I get the following exception:
> > > > >> >> java.lang.IllegalArgumentException: Value is no
> > String
> > > > >> >>
> > (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> > > > >> >>
> > > > >> value=
> > org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> > > > >>
> > > > >> >>
> > > > >> >> and component
> > > > >> >>
> > > > >>
> > zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> > > > >>
> > > > >> >>
> > > > >> >> path: {Component-Path : [Class:
> > > > >> >> javax.faces.component.UIViewRoot,ViewId:
> > > > >> >> /pages/liveReport/index.xhtml][Class:
> > > > >> >> javax.faces.component.html.HtmlForm,Id:
> > zfpForm][Class:
> > > > >> >>
> > com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > > > >> >> zfpPanel][Class:
> > > > >> >>
> > com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > > > >> >> zfpContentCell][Class:
> > > > >> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id:
> > zfpBodyZone][Class:
> > > > >> >>
> > com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> > > > >> >> liveReportFilterDlg][Class:
> > > > >> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> > > > >> >> liveReportFilterDlgDialogControl][Class:
> > > > >> >>
> > com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > > > >> >> _gridBagPanelID_3][Class:
> > > > >> >>
> > com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > > > >> >> _gridBagCellID_29][Class:
> > > > >> >>
> > org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> > > > >> >> liveReportFilterDlgTypeOptions]} does not have a
> > Converter
> > > > >> >>         at
> > > > >> >>
> > > > >>
> > org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
> > > > >>
> > > > >> >>
> > > > >> >>         at
> > > > >> >>
> > > > >>
> > org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
> > > > >>
> > > > >> >>
> > > > >> >>         at
> > > > >> >>
> > > > >>
> > org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
> > > > >>
> > > > >> >>
> > > > >> >>         at
> > > > >> >>
> > > > >>
> > javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
> > > > >> >>         at
> > > > >> >>
> > > > >>
> > org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java
> > :90)
> > > > >>
> > > > >> >>
> > > > >> >> ...
> > > > >> >>
> > > > >> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been
> > unable
> > > > >> >> to determine why it fails on this 3rd call and not 1 or 2. If I
> > > > >> >> refresh the page, the dialog is rendered & shown fine. I verified
> > that
> > > > >> >> it isn't a problem with the message bundle (msg), as it still
> > happens
> > > > >> >> if I hard code the itemLabel values.
> > > > >> >>
> > > > >> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
> > > > >> >>
> > > > >> >> Any ideas? (also, I haven't yet found the RendererUtils$1
> > anonymous
> > > > >> >> class yet to find where it is coming from)
> > > > >> >>
> > > > >> >> Thanks,
> > > > >> >> -Andrew
> > > > >> >>
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >>
> > > > >>
> > > > >>
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> >
> >
>

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Andrew Robinson <an...@gmail.com>.
Yes, I extended the myfaces class to fix the bug:

public class HtmlSelectOneRadio
  extends org.apache.myfaces.component.html.ext.HtmlSelectOneRadio
{
  /**
   * @see javax.faces.component.UIInput#setSubmittedValue(java.lang.Object)
   */
  @Override
  public void setSubmittedValue(Object submittedValue)
  {
    if (submittedValue == RendererUtils.NOTHING ||
      submittedValue ==
org.apache.myfaces.shared_impl.renderkit.RendererUtils.NOTHING)
      submittedValue = null;
    super.setSubmittedValue(submittedValue);
  }
}

On 5/30/07, Celso Nishioka <ce...@gmail.com> wrote:
> Andrew, I'm having the same issue.
>
> Did you get it solved?
>
> Thanks.
>
>
> On 11/29/06, Andrew Robinson < andrew.rw.robinson@gmail.com> wrote:
> > No that hasn't changed, I just checked the source. If you look at the
> > stack trace, somehow the value is an instance of
> >
> "org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1"
> -- it
> > is not null inside the
> "RendererUtils.getConvertedStringValue" method.
> >
> > How in the world that happened is beyond me.
> >
> > -Andrew
> >
> > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > > Andrew,
> > >
> > > Looking at the current code, it shouldn't throw that against a null
> > > value. Maybe they've changed this since your version? Perhaps you could
> > > try with the nightlies just to see if the same behavior happens?
> > >
> > > RenderUtils
> > > ------------
> > > public static String
> getConvertedStringValue(FacesContext context,
> > >
> UIComponent component,
> > > Converter converter, Object value) {
> > >          if (converter == null) {
> > >              if (value == null) {
> > >                  return "";
> > >              }
> > >              else if (value instanceof String) {
> > >                  return (String) value;
> > >              }
> > >              else {
> > >                  throw new IllegalArgumentException(
> > >                      "Value is no String (class=" +
> > > value.getClass().getName() + ", value=" + value + ") and component "
> > >                          + component.getClientId (context) + "with path:
> "
> > >                          + getPathToComponent(component)
> > >                          + " does not have a Converter");
> > >              }
> > >          }
> > >
> > >          return converter.getAsString(context, component, value);
> > >      }
> > > -----------
> > >
> > > Maybe your version is missing the lines:
> > >
> > > if (value == null) {
> > >         return "";
> > > }
> > >
> > > Regards,
> > >
> > > Jeff Bischoff
> > > Kenneth L Kurz & Associates, Inc.
> > >
> > > Andrew Robinson wrote:
> > > > Yes that is correct, it was always null but only failed to render the
> > > > 3rd request.
> > > >
> > > > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > > >> Well the reason it doesn't work is because of the null.
> > > >>
> > > >> Are you saying it was set to null the whole time, and only failed on
> the
> > > >> 3rd request (after having canceled the dialog once)?
> > > >>
> > > >> Regards,
> > > >>
> > > >> Jeff Bischoff
> > > >> Kenneth L Kurz & Associates, Inc.
> > > >>
> > > >> Andrew Robinson wrote:
> > > >> > Found a work around -->
> > > >> > if " value.typeText" is set to one of the values instead of null I
> > > >> > don't get the exception. What I don't understand is why it works
> the
> > > >> > other times but not the 3rd AJAX call.
> > > >> >
> > > >> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> > > >> >> I am getting a bit stuck on this one exception. I have two
> > > >> >> selectOneRadio components within an included facelet (source file)
> > > >> >> that bind to a property on a facelet attribute. The value is a
> custom
> > > >> >> bean with string properties and the select items have string
> values,
> > > >> >> so no converter should be needed. What is odd is that this
> behavior is
> > > >> >> not constant.
> > > >> >>
> > > >> >> Setup:
> > > >> >> index.xhtml defines this component:
> > > >> >>         <ost:liveReportFilterDialog
> > > >> >>           id="liveReportFilterDlg"
> > > >> >>           ajaxZone="reportListZone"
> > > >> >>
> rendered="#{liveReportBean.filterDialogVisible}"
> > > >> >>
> onAcceptListener="#{liveReportBean.filterDialogAccepted}"
> > > >> >>           onCancelListener="#{
> liveReportBean.filterDialogCanceled}"
> > > >> >>           value="#{liveReportBean.filter}" />
> > > >> >>
> > > >> >> It is this "value" that I use within the
> > > >> "liveReportFilterDialog.xhtml":
> > > >> >>
> > > >> >>   <t:selectOneRadio
> > > >> >>     id="#{id}TypeOptions"
> > > >> >>     value="#{ value.typeText}"
> > > >> >>     layout="pageDirection"
> > > >> >>     required="true">
> > > >> >>     <f:selectItem
> > > >> >>       itemLabel="#{
> msg.liverep_filterdlg_typefilter_graph}"
> > > >> >>       itemValue="osoft/livechart" />
> > > >> >>     <f:selectItem
> > > >> >>
> itemLabel="#{msg.liverep_filterdlg_typefilter_report }"
> > > >> >>       itemValue="osoft/livereport" />
> > > >> >>     <f:selectItem
> > > >> >>
> itemLabel="#{msg.liverep_filterdlg_typefilter_schedule }"
> > > >> >>       itemValue="osoft/liveschedule" />
> > > >> >>   </t:selectOneRadio>
> > > >> >>
> > > >> >> The other radio is:
> > > >> >>
> > > >> >>   <t:selectOneRadio value="#{value.ownerStr}"
> > > >> >>     layout="pageDirection">
> > > >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all }"
> > > >> >>       itemValue="ALL" />
> > > >> >>     <f:selectItem
> itemLabel="#{msg.liverep_filterdlg_item_owner}"
> > > >> >>       itemValue="CURRENT_USER" />
> > > >> >>   </t:selectOneRadio>
> > > >> >>
> > > >> >>
> > > >> >> This dialog is usually not rendered, I change the value that the
> > > >> >> rendered attribte points to in an AJAX call ActionListener method.
> > > >> >> When I click the show, it works. Then, I click the cancel (close
> the
> > > >> >> dialog), still okay, but when I try to open the dialog again (3rd
> AJAX
> > > >> >> call) I get the following exception:
> > > >> >> java.lang.IllegalArgumentException: Value is no
> String
> > > >> >>
> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> > > >> >>
> > > >> value=
> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> > > >>
> > > >> >>
> > > >> >> and component
> > > >> >>
> > > >>
> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> > > >>
> > > >> >>
> > > >> >> path: {Component-Path : [Class:
> > > >> >> javax.faces.component.UIViewRoot,ViewId:
> > > >> >> /pages/liveReport/index.xhtml][Class:
> > > >> >> javax.faces.component.html.HtmlForm,Id:
> zfpForm][Class:
> > > >> >>
> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > > >> >> zfpPanel][Class:
> > > >> >>
> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > > >> >> zfpContentCell][Class:
> > > >> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id:
> zfpBodyZone][Class:
> > > >> >>
> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> > > >> >> liveReportFilterDlg][Class:
> > > >> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> > > >> >> liveReportFilterDlgDialogControl][Class:
> > > >> >>
> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > > >> >> _gridBagPanelID_3][Class:
> > > >> >>
> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > > >> >> _gridBagCellID_29][Class:
> > > >> >>
> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> > > >> >> liveReportFilterDlgTypeOptions]} does not have a
> Converter
> > > >> >>         at
> > > >> >>
> > > >>
> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
> > > >>
> > > >> >>
> > > >> >>         at
> > > >> >>
> > > >>
> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
> > > >>
> > > >> >>
> > > >> >>         at
> > > >> >>
> > > >>
> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
> > > >>
> > > >> >>
> > > >> >>         at
> > > >> >>
> > > >>
> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
> > > >> >>         at
> > > >> >>
> > > >>
> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java
> :90)
> > > >>
> > > >> >>
> > > >> >> ...
> > > >> >>
> > > >> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been
> unable
> > > >> >> to determine why it fails on this 3rd call and not 1 or 2. If I
> > > >> >> refresh the page, the dialog is rendered & shown fine. I verified
> that
> > > >> >> it isn't a problem with the message bundle (msg), as it still
> happens
> > > >> >> if I hard code the itemLabel values.
> > > >> >>
> > > >> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
> > > >> >>
> > > >> >> Any ideas? (also, I haven't yet found the RendererUtils$1
> anonymous
> > > >> >> class yet to find where it is coming from)
> > > >> >>
> > > >> >> Thanks,
> > > >> >> -Andrew
> > > >> >>
> > > >> >
> > > >> >
> > > >> >
> > > >>
> > > >>
> > > >>
> > > >
> > > >
> > > >
> > >
> > >
> > >
> >
>
>

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Celso Nishioka <ce...@gmail.com>.
Andrew, I'm having the same issue.

Did you get it solved?

Thanks.

On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
>
> No that hasn't changed, I just checked the source. If you look at the
> stack trace, somehow the value is an instance of
> "org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1" -- it
> is not null inside the "RendererUtils.getConvertedStringValue" method.
>
> How in the world that happened is beyond me.
>
> -Andrew
>
> On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > Andrew,
> >
> > Looking at the current code, it shouldn't throw that against a null
> > value. Maybe they've changed this since your version? Perhaps you could
> > try with the nightlies just to see if the same behavior happens?
> >
> > RenderUtils
> > ------------
> > public static String getConvertedStringValue(FacesContext context,
> >                                                   UIComponent component,
> > Converter converter, Object value) {
> >          if (converter == null) {
> >              if (value == null) {
> >                  return "";
> >              }
> >              else if (value instanceof String) {
> >                  return (String) value;
> >              }
> >              else {
> >                  throw new IllegalArgumentException(
> >                      "Value is no String (class=" +
> > value.getClass().getName() + ", value=" + value + ") and component "
> >                          + component.getClientId(context) + "with path:
> "
> >                          + getPathToComponent(component)
> >                          + " does not have a Converter");
> >              }
> >          }
> >
> >          return converter.getAsString(context, component, value);
> >      }
> > -----------
> >
> > Maybe your version is missing the lines:
> >
> > if (value == null) {
> >         return "";
> > }
> >
> > Regards,
> >
> > Jeff Bischoff
> > Kenneth L Kurz & Associates, Inc.
> >
> > Andrew Robinson wrote:
> > > Yes that is correct, it was always null but only failed to render the
> > > 3rd request.
> > >
> > > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> > >> Well the reason it doesn't work is because of the null.
> > >>
> > >> Are you saying it was set to null the whole time, and only failed on
> the
> > >> 3rd request (after having canceled the dialog once)?
> > >>
> > >> Regards,
> > >>
> > >> Jeff Bischoff
> > >> Kenneth L Kurz & Associates, Inc.
> > >>
> > >> Andrew Robinson wrote:
> > >> > Found a work around -->
> > >> > if "value.typeText" is set to one of the values instead of null I
> > >> > don't get the exception. What I don't understand is why it works
> the
> > >> > other times but not the 3rd AJAX call.
> > >> >
> > >> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> > >> >> I am getting a bit stuck on this one exception. I have two
> > >> >> selectOneRadio components within an included facelet (source file)
> > >> >> that bind to a property on a facelet attribute. The value is a
> custom
> > >> >> bean with string properties and the select items have string
> values,
> > >> >> so no converter should be needed. What is odd is that this
> behavior is
> > >> >> not constant.
> > >> >>
> > >> >> Setup:
> > >> >> index.xhtml defines this component:
> > >> >>         <ost:liveReportFilterDialog
> > >> >>           id="liveReportFilterDlg"
> > >> >>           ajaxZone="reportListZone"
> > >> >>           rendered="#{liveReportBean.filterDialogVisible}"
> > >> >>           onAcceptListener="#{liveReportBean.filterDialogAccepted
> }"
> > >> >>           onCancelListener="#{liveReportBean.filterDialogCanceled
> }"
> > >> >>           value="#{liveReportBean.filter}" />
> > >> >>
> > >> >> It is this "value" that I use within the
> > >> "liveReportFilterDialog.xhtml":
> > >> >>
> > >> >>   <t:selectOneRadio
> > >> >>     id="#{id}TypeOptions"
> > >> >>     value="#{value.typeText}"
> > >> >>     layout="pageDirection"
> > >> >>     required="true">
> > >> >>     <f:selectItem
> > >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
> > >> >>       itemValue="osoft/livechart" />
> > >> >>     <f:selectItem
> > >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
> > >> >>       itemValue="osoft/livereport" />
> > >> >>     <f:selectItem
> > >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
> > >> >>       itemValue="osoft/liveschedule" />
> > >> >>   </t:selectOneRadio>
> > >> >>
> > >> >> The other radio is:
> > >> >>
> > >> >>   <t:selectOneRadio value="#{value.ownerStr}"
> > >> >>     layout="pageDirection">
> > >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
> > >> >>       itemValue="ALL" />
> > >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
> > >> >>       itemValue="CURRENT_USER" />
> > >> >>   </t:selectOneRadio>
> > >> >>
> > >> >>
> > >> >> This dialog is usually not rendered, I change the value that the
> > >> >> rendered attribte points to in an AJAX call ActionListener method.
> > >> >> When I click the show, it works. Then, I click the cancel (close
> the
> > >> >> dialog), still okay, but when I try to open the dialog again (3rd
> AJAX
> > >> >> call) I get the following exception:
> > >> >> java.lang.IllegalArgumentException: Value is no String
> > >> >> (class=
> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> > >> >>
> > >> value=
> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> > >>
> > >> >>
> > >> >> and component
> > >> >>
> > >>
> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> > >>
> > >> >>
> > >> >> path: {Component-Path : [Class:
> > >> >> javax.faces.component.UIViewRoot,ViewId:
> > >> >> /pages/liveReport/index.xhtml][Class:
> > >> >> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > >> >> zfpPanel][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > >> >> zfpContentCell][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id:
> zfpBodyZone][Class:
> > >> >> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> > >> >> liveReportFilterDlg][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> > >> >> liveReportFilterDlgDialogControl][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> > >> >> _gridBagPanelID_3][Class:
> > >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> > >> >> _gridBagCellID_29][Class:
> > >> >> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> > >> >> liveReportFilterDlgTypeOptions]} does not have a Converter
> > >> >>         at
> > >> >>
> > >>
> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue
> (RendererUtils.java:536)
> > >>
> > >> >>
> > >> >>         at
> > >> >>
> > >>
> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd
> (HtmlRadioRendererBase.java:93)
> > >>
> > >> >>
> > >> >>         at
> > >> >>
> > >> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(
> HtmlRadioRenderer.java:71)
> > >>
> > >> >>
> > >> >>         at
> > >> >>
> > >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java
> :536)
> > >> >>         at
> > >> >>
> > >> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(
> ZoneUIComponent.java:90)
> > >>
> > >> >>
> > >> >> ...
> > >> >>
> > >> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been
> unable
> > >> >> to determine why it fails on this 3rd call and not 1 or 2. If I
> > >> >> refresh the page, the dialog is rendered & shown fine. I verified
> that
> > >> >> it isn't a problem with the message bundle (msg), as it still
> happens
> > >> >> if I hard code the itemLabel values.
> > >> >>
> > >> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
> > >> >>
> > >> >> Any ideas? (also, I haven't yet found the RendererUtils$1
> anonymous
> > >> >> class yet to find where it is coming from)
> > >> >>
> > >> >> Thanks,
> > >> >> -Andrew
> > >> >>
> > >> >
> > >> >
> > >> >
> > >>
> > >>
> > >>
> > >
> > >
> > >
> >
> >
> >
>

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Andrew Robinson <an...@gmail.com>.
No that hasn't changed, I just checked the source. If you look at the
stack trace, somehow the value is an instance of
"org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1" -- it
is not null inside the "RendererUtils.getConvertedStringValue" method.

How in the world that happened is beyond me.

-Andrew

On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> Andrew,
>
> Looking at the current code, it shouldn't throw that against a null
> value. Maybe they've changed this since your version? Perhaps you could
> try with the nightlies just to see if the same behavior happens?
>
> RenderUtils
> ------------
> public static String getConvertedStringValue(FacesContext context,
>                                                   UIComponent component,
> Converter converter, Object value) {
>          if (converter == null) {
>              if (value == null) {
>                  return "";
>              }
>              else if (value instanceof String) {
>                  return (String) value;
>              }
>              else {
>                  throw new IllegalArgumentException(
>                      "Value is no String (class=" +
> value.getClass().getName() + ", value=" + value + ") and component "
>                          + component.getClientId(context) + "with path: "
>                          + getPathToComponent(component)
>                          + " does not have a Converter");
>              }
>          }
>
>          return converter.getAsString(context, component, value);
>      }
> -----------
>
> Maybe your version is missing the lines:
>
> if (value == null) {
>         return "";
> }
>
> Regards,
>
> Jeff Bischoff
> Kenneth L Kurz & Associates, Inc.
>
> Andrew Robinson wrote:
> > Yes that is correct, it was always null but only failed to render the
> > 3rd request.
> >
> > On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> >> Well the reason it doesn't work is because of the null.
> >>
> >> Are you saying it was set to null the whole time, and only failed on the
> >> 3rd request (after having canceled the dialog once)?
> >>
> >> Regards,
> >>
> >> Jeff Bischoff
> >> Kenneth L Kurz & Associates, Inc.
> >>
> >> Andrew Robinson wrote:
> >> > Found a work around -->
> >> > if "value.typeText" is set to one of the values instead of null I
> >> > don't get the exception. What I don't understand is why it works the
> >> > other times but not the 3rd AJAX call.
> >> >
> >> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> >> >> I am getting a bit stuck on this one exception. I have two
> >> >> selectOneRadio components within an included facelet (source file)
> >> >> that bind to a property on a facelet attribute. The value is a custom
> >> >> bean with string properties and the select items have string values,
> >> >> so no converter should be needed. What is odd is that this behavior is
> >> >> not constant.
> >> >>
> >> >> Setup:
> >> >> index.xhtml defines this component:
> >> >>         <ost:liveReportFilterDialog
> >> >>           id="liveReportFilterDlg"
> >> >>           ajaxZone="reportListZone"
> >> >>           rendered="#{liveReportBean.filterDialogVisible}"
> >> >>           onAcceptListener="#{liveReportBean.filterDialogAccepted}"
> >> >>           onCancelListener="#{liveReportBean.filterDialogCanceled}"
> >> >>           value="#{liveReportBean.filter}" />
> >> >>
> >> >> It is this "value" that I use within the
> >> "liveReportFilterDialog.xhtml":
> >> >>
> >> >>   <t:selectOneRadio
> >> >>     id="#{id}TypeOptions"
> >> >>     value="#{value.typeText}"
> >> >>     layout="pageDirection"
> >> >>     required="true">
> >> >>     <f:selectItem
> >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
> >> >>       itemValue="osoft/livechart" />
> >> >>     <f:selectItem
> >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
> >> >>       itemValue="osoft/livereport" />
> >> >>     <f:selectItem
> >> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
> >> >>       itemValue="osoft/liveschedule" />
> >> >>   </t:selectOneRadio>
> >> >>
> >> >> The other radio is:
> >> >>
> >> >>   <t:selectOneRadio value="#{value.ownerStr}"
> >> >>     layout="pageDirection">
> >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
> >> >>       itemValue="ALL" />
> >> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
> >> >>       itemValue="CURRENT_USER" />
> >> >>   </t:selectOneRadio>
> >> >>
> >> >>
> >> >> This dialog is usually not rendered, I change the value that the
> >> >> rendered attribte points to in an AJAX call ActionListener method.
> >> >> When I click the show, it works. Then, I click the cancel (close the
> >> >> dialog), still okay, but when I try to open the dialog again (3rd AJAX
> >> >> call) I get the following exception:
> >> >> java.lang.IllegalArgumentException: Value is no String
> >> >> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> >> >>
> >> value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> >>
> >> >>
> >> >> and component
> >> >>
> >> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> >>
> >> >>
> >> >> path: {Component-Path : [Class:
> >> >> javax.faces.component.UIViewRoot,ViewId:
> >> >> /pages/liveReport/index.xhtml][Class:
> >> >> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
> >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> >> >> zfpPanel][Class:
> >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> >> >> zfpContentCell][Class:
> >> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
> >> >> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> >> >> liveReportFilterDlg][Class:
> >> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> >> >> liveReportFilterDlgDialogControl][Class:
> >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> >> >> _gridBagPanelID_3][Class:
> >> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> >> >> _gridBagCellID_29][Class:
> >> >> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> >> >> liveReportFilterDlgTypeOptions]} does not have a Converter
> >> >>         at
> >> >>
> >> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
> >>
> >> >>
> >> >>         at
> >> >>
> >> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
> >>
> >> >>
> >> >>         at
> >> >>
> >> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
> >>
> >> >>
> >> >>         at
> >> >>
> >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
> >> >>         at
> >> >>
> >> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90)
> >>
> >> >>
> >> >> ...
> >> >>
> >> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
> >> >> to determine why it fails on this 3rd call and not 1 or 2. If I
> >> >> refresh the page, the dialog is rendered & shown fine. I verified that
> >> >> it isn't a problem with the message bundle (msg), as it still happens
> >> >> if I hard code the itemLabel values.
> >> >>
> >> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
> >> >>
> >> >> Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
> >> >> class yet to find where it is coming from)
> >> >>
> >> >> Thanks,
> >> >> -Andrew
> >> >>
> >> >
> >> >
> >> >
> >>
> >>
> >>
> >
> >
> >
>
>
>

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Jeff Bischoff <jb...@klkurz.com>.
Andrew,

Looking at the current code, it shouldn't throw that against a null 
value. Maybe they've changed this since your version? Perhaps you could 
try with the nightlies just to see if the same behavior happens?

RenderUtils
------------
public static String getConvertedStringValue(FacesContext context,
                                                  UIComponent component, 
Converter converter, Object value) {
         if (converter == null) {
             if (value == null) {
                 return "";
             }
             else if (value instanceof String) {
                 return (String) value;
             }
             else {
                 throw new IllegalArgumentException(
                     "Value is no String (class=" + 
value.getClass().getName() + ", value=" + value + ") and component "
                         + component.getClientId(context) + "with path: "
                         + getPathToComponent(component)
                         + " does not have a Converter");
             }
         }

         return converter.getAsString(context, component, value);
     }
-----------

Maybe your version is missing the lines:

if (value == null) {
	return "";
}

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

Andrew Robinson wrote:
> Yes that is correct, it was always null but only failed to render the
> 3rd request.
> 
> On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
>> Well the reason it doesn't work is because of the null.
>>
>> Are you saying it was set to null the whole time, and only failed on the
>> 3rd request (after having canceled the dialog once)?
>>
>> Regards,
>>
>> Jeff Bischoff
>> Kenneth L Kurz & Associates, Inc.
>>
>> Andrew Robinson wrote:
>> > Found a work around -->
>> > if "value.typeText" is set to one of the values instead of null I
>> > don't get the exception. What I don't understand is why it works the
>> > other times but not the 3rd AJAX call.
>> >
>> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
>> >> I am getting a bit stuck on this one exception. I have two
>> >> selectOneRadio components within an included facelet (source file)
>> >> that bind to a property on a facelet attribute. The value is a custom
>> >> bean with string properties and the select items have string values,
>> >> so no converter should be needed. What is odd is that this behavior is
>> >> not constant.
>> >>
>> >> Setup:
>> >> index.xhtml defines this component:
>> >>         <ost:liveReportFilterDialog
>> >>           id="liveReportFilterDlg"
>> >>           ajaxZone="reportListZone"
>> >>           rendered="#{liveReportBean.filterDialogVisible}"
>> >>           onAcceptListener="#{liveReportBean.filterDialogAccepted}"
>> >>           onCancelListener="#{liveReportBean.filterDialogCanceled}"
>> >>           value="#{liveReportBean.filter}" />
>> >>
>> >> It is this "value" that I use within the 
>> "liveReportFilterDialog.xhtml":
>> >>
>> >>   <t:selectOneRadio
>> >>     id="#{id}TypeOptions"
>> >>     value="#{value.typeText}"
>> >>     layout="pageDirection"
>> >>     required="true">
>> >>     <f:selectItem
>> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
>> >>       itemValue="osoft/livechart" />
>> >>     <f:selectItem
>> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
>> >>       itemValue="osoft/livereport" />
>> >>     <f:selectItem
>> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
>> >>       itemValue="osoft/liveschedule" />
>> >>   </t:selectOneRadio>
>> >>
>> >> The other radio is:
>> >>
>> >>   <t:selectOneRadio value="#{value.ownerStr}"
>> >>     layout="pageDirection">
>> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
>> >>       itemValue="ALL" />
>> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
>> >>       itemValue="CURRENT_USER" />
>> >>   </t:selectOneRadio>
>> >>
>> >>
>> >> This dialog is usually not rendered, I change the value that the
>> >> rendered attribte points to in an AJAX call ActionListener method.
>> >> When I click the show, it works. Then, I click the cancel (close the
>> >> dialog), still okay, but when I try to open the dialog again (3rd AJAX
>> >> call) I get the following exception:
>> >> java.lang.IllegalArgumentException: Value is no String
>> >> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
>> >> 
>> value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483) 
>>
>> >>
>> >> and component
>> >> 
>> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith 
>>
>> >>
>> >> path: {Component-Path : [Class:
>> >> javax.faces.component.UIViewRoot,ViewId:
>> >> /pages/liveReport/index.xhtml][Class:
>> >> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
>> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
>> >> zfpPanel][Class:
>> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
>> >> zfpContentCell][Class:
>> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
>> >> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
>> >> liveReportFilterDlg][Class:
>> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
>> >> liveReportFilterDlgDialogControl][Class:
>> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
>> >> _gridBagPanelID_3][Class:
>> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
>> >> _gridBagCellID_29][Class:
>> >> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
>> >> liveReportFilterDlgTypeOptions]} does not have a Converter
>> >>         at
>> >> 
>> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536) 
>>
>> >>
>> >>         at
>> >> 
>> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93) 
>>
>> >>
>> >>         at
>> >> 
>> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71) 
>>
>> >>
>> >>         at
>> >> 
>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
>> >>         at
>> >> 
>> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90) 
>>
>> >>
>> >> ...
>> >>
>> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
>> >> to determine why it fails on this 3rd call and not 1 or 2. If I
>> >> refresh the page, the dialog is rendered & shown fine. I verified that
>> >> it isn't a problem with the message bundle (msg), as it still happens
>> >> if I hard code the itemLabel values.
>> >>
>> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
>> >>
>> >> Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
>> >> class yet to find where it is coming from)
>> >>
>> >> Thanks,
>> >> -Andrew
>> >>
>> >
>> >
>> >
>>
>>
>>
> 
> 
> 



Re: java.lang.IllegalArgumentException: Value is no String

Posted by Andrew Robinson <an...@gmail.com>.
Yes that is correct, it was always null but only failed to render the
3rd request.

On 11/29/06, Jeff Bischoff <jb...@klkurz.com> wrote:
> Well the reason it doesn't work is because of the null.
>
> Are you saying it was set to null the whole time, and only failed on the
> 3rd request (after having canceled the dialog once)?
>
> Regards,
>
> Jeff Bischoff
> Kenneth L Kurz & Associates, Inc.
>
> Andrew Robinson wrote:
> > Found a work around -->
> > if "value.typeText" is set to one of the values instead of null I
> > don't get the exception. What I don't understand is why it works the
> > other times but not the 3rd AJAX call.
> >
> > On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> >> I am getting a bit stuck on this one exception. I have two
> >> selectOneRadio components within an included facelet (source file)
> >> that bind to a property on a facelet attribute. The value is a custom
> >> bean with string properties and the select items have string values,
> >> so no converter should be needed. What is odd is that this behavior is
> >> not constant.
> >>
> >> Setup:
> >> index.xhtml defines this component:
> >>         <ost:liveReportFilterDialog
> >>           id="liveReportFilterDlg"
> >>           ajaxZone="reportListZone"
> >>           rendered="#{liveReportBean.filterDialogVisible}"
> >>           onAcceptListener="#{liveReportBean.filterDialogAccepted}"
> >>           onCancelListener="#{liveReportBean.filterDialogCanceled}"
> >>           value="#{liveReportBean.filter}" />
> >>
> >> It is this "value" that I use within the "liveReportFilterDialog.xhtml":
> >>
> >>   <t:selectOneRadio
> >>     id="#{id}TypeOptions"
> >>     value="#{value.typeText}"
> >>     layout="pageDirection"
> >>     required="true">
> >>     <f:selectItem
> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
> >>       itemValue="osoft/livechart" />
> >>     <f:selectItem
> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
> >>       itemValue="osoft/livereport" />
> >>     <f:selectItem
> >>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
> >>       itemValue="osoft/liveschedule" />
> >>   </t:selectOneRadio>
> >>
> >> The other radio is:
> >>
> >>   <t:selectOneRadio value="#{value.ownerStr}"
> >>     layout="pageDirection">
> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
> >>       itemValue="ALL" />
> >>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
> >>       itemValue="CURRENT_USER" />
> >>   </t:selectOneRadio>
> >>
> >>
> >> This dialog is usually not rendered, I change the value that the
> >> rendered attribte points to in an AJAX call ActionListener method.
> >> When I click the show, it works. Then, I click the cancel (close the
> >> dialog), still okay, but when I try to open the dialog again (3rd AJAX
> >> call) I get the following exception:
> >> java.lang.IllegalArgumentException: Value is no String
> >> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> >> value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> >>
> >> and component
> >> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> >>
> >> path: {Component-Path : [Class:
> >> javax.faces.component.UIViewRoot,ViewId:
> >> /pages/liveReport/index.xhtml][Class:
> >> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> >> zfpPanel][Class:
> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> >> zfpContentCell][Class:
> >> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
> >> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> >> liveReportFilterDlg][Class:
> >> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> >> liveReportFilterDlgDialogControl][Class:
> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> >> _gridBagPanelID_3][Class:
> >> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> >> _gridBagCellID_29][Class:
> >> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> >> liveReportFilterDlgTypeOptions]} does not have a Converter
> >>         at
> >> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
> >>
> >>         at
> >> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
> >>
> >>         at
> >> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
> >>
> >>         at
> >> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
> >>         at
> >> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90)
> >>
> >> ...
> >>
> >> The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
> >> to determine why it fails on this 3rd call and not 1 or 2. If I
> >> refresh the page, the dialog is rendered & shown fine. I verified that
> >> it isn't a problem with the message bundle (msg), as it still happens
> >> if I hard code the itemLabel values.
> >>
> >> I am on a 1.1.3 patched version of both Tomahawk and Core.
> >>
> >> Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
> >> class yet to find where it is coming from)
> >>
> >> Thanks,
> >> -Andrew
> >>
> >
> >
> >
>
>
>

Re: java.lang.IllegalArgumentException: Value is no String

Posted by Jeff Bischoff <jb...@klkurz.com>.
Well the reason it doesn't work is because of the null.

Are you saying it was set to null the whole time, and only failed on the 
3rd request (after having canceled the dialog once)?

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

Andrew Robinson wrote:
> Found a work around -->
> if "value.typeText" is set to one of the values instead of null I
> don't get the exception. What I don't understand is why it works the
> other times but not the 3rd AJAX call.
> 
> On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
>> I am getting a bit stuck on this one exception. I have two
>> selectOneRadio components within an included facelet (source file)
>> that bind to a property on a facelet attribute. The value is a custom
>> bean with string properties and the select items have string values,
>> so no converter should be needed. What is odd is that this behavior is
>> not constant.
>>
>> Setup:
>> index.xhtml defines this component:
>>         <ost:liveReportFilterDialog
>>           id="liveReportFilterDlg"
>>           ajaxZone="reportListZone"
>>           rendered="#{liveReportBean.filterDialogVisible}"
>>           onAcceptListener="#{liveReportBean.filterDialogAccepted}"
>>           onCancelListener="#{liveReportBean.filterDialogCanceled}"
>>           value="#{liveReportBean.filter}" />
>>
>> It is this "value" that I use within the "liveReportFilterDialog.xhtml":
>>
>>   <t:selectOneRadio
>>     id="#{id}TypeOptions"
>>     value="#{value.typeText}"
>>     layout="pageDirection"
>>     required="true">
>>     <f:selectItem
>>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
>>       itemValue="osoft/livechart" />
>>     <f:selectItem
>>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
>>       itemValue="osoft/livereport" />
>>     <f:selectItem
>>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
>>       itemValue="osoft/liveschedule" />
>>   </t:selectOneRadio>
>>
>> The other radio is:
>>
>>   <t:selectOneRadio value="#{value.ownerStr}"
>>     layout="pageDirection">
>>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
>>       itemValue="ALL" />
>>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
>>       itemValue="CURRENT_USER" />
>>   </t:selectOneRadio>
>>
>>
>> This dialog is usually not rendered, I change the value that the
>> rendered attribte points to in an AJAX call ActionListener method.
>> When I click the show, it works. Then, I click the cancel (close the
>> dialog), still okay, but when I try to open the dialog again (3rd AJAX
>> call) I get the following exception:
>> java.lang.IllegalArgumentException: Value is no String
>> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
>> value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483) 
>>
>> and component 
>> zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith 
>>
>> path: {Component-Path : [Class:
>> javax.faces.component.UIViewRoot,ViewId:
>> /pages/liveReport/index.xhtml][Class:
>> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
>> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
>> zfpPanel][Class:
>> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
>> zfpContentCell][Class:
>> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
>> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
>> liveReportFilterDlg][Class:
>> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
>> liveReportFilterDlgDialogControl][Class:
>> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
>> _gridBagPanelID_3][Class:
>> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
>> _gridBagCellID_29][Class:
>> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
>> liveReportFilterDlgTypeOptions]} does not have a Converter
>>         at 
>> org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536) 
>>
>>         at 
>> org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93) 
>>
>>         at 
>> org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71) 
>>
>>         at 
>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
>>         at 
>> org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90) 
>>
>> ...
>>
>> The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
>> to determine why it fails on this 3rd call and not 1 or 2. If I
>> refresh the page, the dialog is rendered & shown fine. I verified that
>> it isn't a problem with the message bundle (msg), as it still happens
>> if I hard code the itemLabel values.
>>
>> I am on a 1.1.3 patched version of both Tomahawk and Core.
>>
>> Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
>> class yet to find where it is coming from)
>>
>> Thanks,
>> -Andrew
>>
> 
> 
> 



Re: java.lang.IllegalArgumentException: Value is no String

Posted by Andrew Robinson <an...@gmail.com>.
Found a work around -->
if "value.typeText" is set to one of the values instead of null I
don't get the exception. What I don't understand is why it works the
other times but not the 3rd AJAX call.

On 11/29/06, Andrew Robinson <an...@gmail.com> wrote:
> I am getting a bit stuck on this one exception. I have two
> selectOneRadio components within an included facelet (source file)
> that bind to a property on a facelet attribute. The value is a custom
> bean with string properties and the select items have string values,
> so no converter should be needed. What is odd is that this behavior is
> not constant.
>
> Setup:
> index.xhtml defines this component:
>         <ost:liveReportFilterDialog
>           id="liveReportFilterDlg"
>           ajaxZone="reportListZone"
>           rendered="#{liveReportBean.filterDialogVisible}"
>           onAcceptListener="#{liveReportBean.filterDialogAccepted}"
>           onCancelListener="#{liveReportBean.filterDialogCanceled}"
>           value="#{liveReportBean.filter}" />
>
> It is this "value" that I use within the "liveReportFilterDialog.xhtml":
>
>   <t:selectOneRadio
>     id="#{id}TypeOptions"
>     value="#{value.typeText}"
>     layout="pageDirection"
>     required="true">
>     <f:selectItem
>       itemLabel="#{msg.liverep_filterdlg_typefilter_graph}"
>       itemValue="osoft/livechart" />
>     <f:selectItem
>       itemLabel="#{msg.liverep_filterdlg_typefilter_report}"
>       itemValue="osoft/livereport" />
>     <f:selectItem
>       itemLabel="#{msg.liverep_filterdlg_typefilter_schedule}"
>       itemValue="osoft/liveschedule" />
>   </t:selectOneRadio>
>
> The other radio is:
>
>   <t:selectOneRadio value="#{value.ownerStr}"
>     layout="pageDirection">
>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_all}"
>       itemValue="ALL" />
>     <f:selectItem itemLabel="#{msg.liverep_filterdlg_item_owner}"
>       itemValue="CURRENT_USER" />
>   </t:selectOneRadio>
>
>
> This dialog is usually not rendered, I change the value that the
> rendered attribte points to in an AJAX call ActionListener method.
> When I click the show, it works. Then, I click the cancel (close the
> dialog), still okay, but when I try to open the dialog again (3rd AJAX
> call) I get the following exception:
> java.lang.IllegalArgumentException: Value is no String
> (class=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1,
> value=org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils$1@53c483)
> and component zfpPanel:liveReportFilterDlgDialogControl:_gridBagPanelID_3:liveReportFilterDlgTypeOptionswith
> path: {Component-Path : [Class:
> javax.faces.component.UIViewRoot,ViewId:
> /pages/liveReport/index.xhtml][Class:
> javax.faces.component.html.HtmlForm,Id: zfpForm][Class:
> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> zfpPanel][Class:
> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> zfpContentCell][Class:
> com.outlooksoft.cpm.faces.controls.UIAjaxZone,Id: zfpBodyZone][Class:
> com.outlooksoft.cpm.livereport.controls.HtmlReportFilterDialog,Id:
> liveReportFilterDlg][Class:
> com.outlooksoft.cpm.faces.controls.UIDialog,Id:
> liveReportFilterDlgDialogControl][Class:
> com.outlooksoft.cpm.faces.controls.HtmlGridBagPanel,Id:
> _gridBagPanelID_3][Class:
> com.outlooksoft.cpm.faces.controls.HtmlGridBagCell,Id:
> _gridBagCellID_29][Class:
> org.apache.myfaces.component.html.ext.HtmlSelectOneRadio,Id:
> liveReportFilterDlgTypeOptions]} does not have a Converter
>         at org.apache.myfaces.shared_tomahawk.renderkit.RendererUtils.getConvertedStringValue(RendererUtils.java:536)
>         at org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlRadioRendererBase.encodeEnd(HtmlRadioRendererBase.java:93)
>         at org.apache.myfaces.renderkit.html.ext.HtmlRadioRenderer.encodeEnd(HtmlRadioRenderer.java:71)
>         at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
>         at org.ajaxanywhere.jsf.ZoneUIComponent.renderComponent(ZoneUIComponent.java:90)
> ...
>
> The "ownerStr" is "ALL" and the "typeText" is null. I have been unable
> to determine why it fails on this 3rd call and not 1 or 2. If I
> refresh the page, the dialog is rendered & shown fine. I verified that
> it isn't a problem with the message bundle (msg), as it still happens
> if I hard code the itemLabel values.
>
> I am on a 1.1.3 patched version of both Tomahawk and Core.
>
> Any ideas? (also, I haven't yet found the RendererUtils$1 anonymous
> class yet to find where it is coming from)
>
> Thanks,
> -Andrew
>