我有一些域类事件,问题,类别,影响,紧急等.
Class Incident
{
Category category
String subject
Impact impact
}
Class Problem
{
Urgency urgency
Category category
String title
}
Class Category
{
String categoryName
String description
}
Run Code Online (Sandbox Code Playgroud)
现在,一些行被插入到这个类中.现在,如果我删除类别,它会抛出错误,如'grails无法删除或更新父行'..所以我必须做什么删除?
我想知道是否可以使用g:include来仅包含给定页面的正文内容.
假设我有一个主要布局页面如下:
<html>
<head>
<title>My start page</title>
<g:layoutHead>
</head>
<body>
<g:layoutBody>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后是主页面(index.gsp)
<html>
<head>
<!-- main layout reference -->
<meta name="layout" content="main"/>
</head>
<body>
THIS IS MY INDEX BODY CONTENT WITH AN INCLUDE
<g:include controller="book" action="list"/>
<g:link controller="book" action="list">See the full list!</g:link>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
最后是书/列表页面
<html>
<head>
<!-- main layout reference -->
<meta name="layout" content="main"/>
</head>
<body>
<table>
<g:each in="${books}">
<tr>
<td>${it.author}</td>
<td>${it.title}</td>
<td>${it.price}</td>
</tr>
</g:each>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
所以我想要实现的是主页面(index.gsp)只包括book/list页面中定义的表.但是,当我尝试这个时,它包括整个html定义(<html>标签和所有).
有可能以某种方式这样做吗?我尝试过这样的事情<g:include controller="book" action="list" view="someView.gsp"/>然而这不起作用.我真的想避免向"索引控制器"添加图书清单逻辑,我想重用我现有的控制器. …
是否可以使用作为参数传递的controller-action名称调用另一个controller-action.像这样的东西:
视图:
<g:createLink controller="book" action="list"
params="[id: '1', onCompleteController='nextCon', onCompleteAction='nextAct']"/>
Run Code Online (Sandbox Code Playgroud)
控制器(书):
def list = {
... //Do something like save book
**execute onCompleteController/onCompleteAction**
return render(text: [success:true] as JSON))
}
Run Code Online (Sandbox Code Playgroud) Grails 1.3.7
数据绑定问题具有List内容的Command对象.示例命令:
class Tracker {
String name
String description
List<Unit> units = new ArrayList()
}
class Unit {
String name
Long unitMax
Long unitMin
}
Run Code Online (Sandbox Code Playgroud)
为Tracker创建GSP具有单位字段.一个例子:
<g:textField name="units[0].unitMax" value=""/>
Run Code Online (Sandbox Code Playgroud)
TrackerController保存方法:
def save = { Tracker trackerInstance ->
trackerInstance = trackingService.saveOrUpdateTracker(trackerInstance)
}
Run Code Online (Sandbox Code Playgroud)
但是,始终是java.lang.IndexOutOfBoundsException
或者,如果我将控制器更新为:
def save = {
Tracker trackerInstance = new Tracker()
trackerInstance.properties = params
....
Run Code Online (Sandbox Code Playgroud)
然后groovy.lang.ReadOnlyPropertyException:无法设置readonly属性:class的属性:com.redbrickhealth.dto.Tracker任何想法?
GORM与Command对象之间的绑定似乎有区别.
也许我需要为Unit扩展并注册PropertyEditorSupport?
-Todd
我是Grails的新手,虽然我在使用不同语言的其他mvc框架(Perl,Python,Ruby)开发Web应用程序方面有很多经验.
我试图了解CRUD在grails中的含义.
基本上Grails默认为create函数创建以下两种方法:
create,用于显示创建保存的表单,用于保存已发布的表单
现在来自不同的框架,我习惯只有一个创建方法:
如果请求方法是GET,这个函数将显示表单,如果请求方法是POST,则保存表单,这似乎是大多数框架的首选方式?!?!?
为什么Grails会采用完全不同的方法来实现此功能?我知道我可以手动改变它,但这样做有什么意义呢?我将放松什么,我将获得什么.
我知道这不是一个非常具体的问题,我肯定不想开始一场火焰战,但我想明白为什么选择另一种方式......
在此先感谢您的ansers.
我想传递i的值来创建.gsp页面,如何做到这一点
def save = {
def billingPeriodInstance = new BillingPeriod(params)
DatabaseImpController obj= new DatabaseImpController()
int i = obj.setbillPeriod()
if(i== 1){
render(view: "create")
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个管理我的上传者的课程.它利用了插件文件上传器,并补充了我的应用程序的其他信息和规则.
我正在尝试创建一个管理应用程序某些行为的服务,并注意到"服务"无法识别控制器中使用的某些方法.例如,方法"重定向"仅适用于控制器,并且在服务中无法识别.
在我的一项服务中,我将转发类型为"文件"的文件作为参数提供给服务,但将"文件"属性设置为"原始文件名",大小等在"服务"中无法识别.有人可以告诉我如何从"文件"中获取这些属性,并将这些方法作为"重定向"在"服务"中识别?
我使用a来显示个人资料名称列表.
<g:select name="ProfileSelector" from='${ProfileList?.profileName}' id='ProfileSelect' noSelection="['null':' SELECT VT']" disabled="true" />
Run Code Online (Sandbox Code Playgroud)
因此,配置文件列表是具有profilename,profileid,profileDescription的配置文件的类型.在提交时,我只能访问在控制器中选择为param的profileName.是否有任何方法可以将相应profileName的profileId作为param传递.
我在控制器中使用服务.我正在为控制器编写单元测试,但我无法在控制器中实例化服务.它始终是null.
如果我new在Controller测试类中使用operator 实例化服务.服务类中的服务未实例化.
如何在测试类中实例化服务?