0

有没有办法给我的链接一个对象中的所有变量?这样做的目的是使链接成为书签。重新构建屏幕的重要信息都将在 URL 中。

我的解决方法引入了会话和 url 重写。这是一个链接,将在我的对象中添加或更改行业变量s

<a href="@{Stocks.index()}?s.industry=${roeBean.industry?.urlEncode()}">

单击链接时,将调用 Stocks.index 并接受对象s作为其参数。接收 s.industry 数据并且所有其他值s都为空。因此,我可以将参数与会话中保存的s另一个副本合并。s然后更新缓存并重写 URL。

它工作得很好,但如果播放框架有一些东西来简单地扩展状态对象并更改一个变量(仅用于链接),它会更优雅。有没有一种干净的方法可以做到这一点?我想象这将非常有用。

4

2 回答 2

0

只是为了更新行业工作而创建一个新的控制器方法(不是索引)吗?当传递 s.id 和要添加的 s.industry 时,以下操作将起作用(或者如果您要这样做,则替换存在)。

在您看来:(将视图发送到 s 对象,但您现在似乎这样做了)(另外,我正在使用 groovy 模板助手,如果您愿意,可以使用 html,结果相同)

#{a @Stocks.index(s.id, s.industry=roeBean.industry) } Add This Industry {/a}

在您的控制器中:(将字符串替换为任何行业)

public static void addIndustry(Long id, String industry) {
    Stock s = Search.findById(id);
    String i = industry;
    //Do your stuff
    s.save();
}

在此处传递静态字符串(或其他内容)也可以。所以 s.industry='test' 在这个例子中会得到 id=1 和行业=test。

如果您希望您的链接具有对象的所有属性,您不能只发送整个对象吗?如果您只想要整个对象,则传递对象中每个属性的整个键/值位似乎需要做很多工作?所以在这个例子中:

当您从控制器渲染视图时

render(s);

链接?

#{a @Stocks.index(s, s.industry=roeBean.industry) } Add This Industry {/a}

在您的控制器中保存:

public static void addIndustry(Stock s, String industry) {
    //Do your stuff
    s.save();
}
于 2012-10-22T10:38:22.217 回答
0

我了解您在数据库中有实体 S 并且您只想更改该实体中的 s.industry 值。

如果与s.industry一起添加s.id参数,则播放!将从数据库中获取具有此 ID 的 S 实体,并将合并到您在 URL 中传递的参数中。所以,对于这样的链接:

<a href="@{Stocks.index()}?s.industry=${roeBean.industry?.urlEncode()}&s.id=1">

会发生以下情况。Play 将获取 id=1 的 S 对象,然后它将设置您作为 URL 参数传递的行业值,然后Stocks.index方法将获取合并的 S 对象。

于 2012-10-22T08:23:41.597 回答