Grails插件filterPane associatedProperties不';不适用于java.net.URL

Grails插件filterPane associatedProperties不';不适用于java.net.URL,url,grails,filter,pane,Url,Grails,Filter,Pane,我想在下面的课堂上设置一个过滤器(“辩论”)。默认情况下,我会得到一个包含标题、发布和url的过滤器。这很好,但是当我尝试对URL进行筛选时,我得到了以下异常。“java.lang.String不能强制转换为java.net.URL”,有关完整堆栈跟踪,请参见底部 为了解决这个问题,我添加了一个url.authority的associatedProperties,见下文。我想,因为filterpane是比较字符串的,所以我给它一个字符串(url.authority) 问题是url.authori

我想在下面的课堂上设置一个过滤器(“辩论”)。默认情况下,我会得到一个包含标题、发布和url的过滤器。这很好,但是当我尝试对URL进行筛选时,我得到了以下异常。“java.lang.String不能强制转换为java.net.URL”,有关完整堆栈跟踪,请参见底部

为了解决这个问题,我添加了一个url.authority的associatedProperties,见下文。我想,因为filterpane是比较字符串的,所以我给它一个字符串(url.authority)

问题是url.authority的associatedProperties从未出现在筛选器上

我查看了filterpane代码,可以看到以下代码

// Extract out the associations.  These are handled separately from simple properties.
List associatedProps = persistentProps.findAll {
    it.association == true && !it.type.isEnum()
}
这不包括url.authority,因为url.authority不是单独的域。我可以把url放到一个域中,我猜它会起作用,但我不想这样做,因为它会改变我的底层代码以适应插件,这是非常糟糕的做法

class Debate
{
  String title;
  Date published;
  URL url;

  static constraints =
  {
    url nullable : false, unique : true
  }
}
顺便说一句,我试着不使用excludeProperties,这没有什么区别

<filterpane:filterPane dialog="true" domain="com.content.OpenDebate"
associatedProperties="url.port" excludeProperties="url"/>

顺便说一句:为什么我会被限制在我可以用来描述这篇文章的标签里。我必须拥有1500或更高的声誉,才能包括filterpane和associatedproperties这两个词。这使得我的帖子不太可能被回复。

所以我在这方面花了足够的时间。我有个变通办法

我在我的域类中添加了一个额外的字段。这提供了我想要筛选的url.authority

我已将url从筛选器中排除,并添加了作者

请参阅下面的代码

class Debate
{
  String title;
  Date published;
  URL url;

  // author derived from url
  String getAuthor()
  {
    return(url.authority)
  }

  void setAuthor(String s)
  {
    // do nothing, just a dummy.
  }

  static constraints =
  {
    url nullable : false, unique : true
  }

  @Override
  String toString()
  {
    return "${url} : ${title} : ${author} : ${published}";
  }



<filterpane:filterPane dialog="true" domain="com.content.OpenDebate" 
filterProperties="${['author', 'title', 'published']}"
filterPropertyValues="${[published:[precision:'day']]}"/>
课堂辩论
{
字符串标题;
公布日期;
网址;
//从url派生的作者
字符串getAuthor()
{
返回(url.authority)
}
void setAuthor(字符串s)
{
//什么也不做,只是个傀儡。
}
静态约束=
{
url可为空:false,唯一:true
}
@凌驾
字符串toString()
{
返回“${url}:${title}:${author}:${published}”;
}
class Debate
{
  String title;
  Date published;
  URL url;

  // author derived from url
  String getAuthor()
  {
    return(url.authority)
  }

  void setAuthor(String s)
  {
    // do nothing, just a dummy.
  }

  static constraints =
  {
    url nullable : false, unique : true
  }

  @Override
  String toString()
  {
    return "${url} : ${title} : ${author} : ${published}";
  }



<filterpane:filterPane dialog="true" domain="com.content.OpenDebate" 
filterProperties="${['author', 'title', 'published']}"
filterPropertyValues="${[published:[precision:'day']]}"/>