我有一个非常简单的项目,用户具有帐户,帐户具有交易。
我使用grails生成所有事务生成了视图,控制器和服务。
交易域对象如下:
class Transaction {
Account account
BigDecimal debit = 0
BigDecimal credit = 0
static constraints = {
}
}
控制器只有这样:
def create() {
respond new Transaction(params)
}
即仅发送新交易(不发送帐户列表)。
但是,创建用户界面具有系统中所有帐户的下拉列表(不仅限于该用户):
问题是,有没有一种方法可以“修复”仅显示用户帐户?如果没有,我总是可以用硬编码的每个字段手动编写创建视图。只是想知道是否有很酷的方法。
答案 0 :(得分:1)
这是一个棘手的问题,不是吗?在研究了这个问题的解决方案一段时间之后,我发现我们可以通过执行以下操作来满足需要。
在create
的{{1}}视图中,自定义一些如何呈现数据的方法:
transaction
其中<g:form resource="${this.transaction}" method="POST">
<fieldset class="form">
<f:field bean="transaction" property="account" wrapper="transaction/account"/>
<f:all bean="transaction" except="account"/>
</fieldset>
...
</g:form>
是我们放置wrapper
的目录(即路径)。在Loading Templates Conventionally Example部分中了解更多信息,以了解如何以及在何处定义自定义包装,模板和小部件。为解决您的问题,_wrapper.gsp
具有以下代码:
_wrapper.gsp
<%@ page import="dropdown.Account" %>
<%
def values = dropdown.Account.all.collect {it.currencyIso}.unique(true)
//println values
%>
<div class="fieldcontain required">
<label for="account">Account <span class="required-indicator">*</span></label>
<g:select name="account" from="${values}"
value="${transaction?.account}"/>
</div>
的位置为_wrapper.gsp
。
P / S:当我遇到关于grails-app/views/_fields/transaction/account/_wrapper.gsp
的{{3}}时,我有了这个想法。