我想摆脱 create.gsp 和 save.gsp 并将所有内容都放在同一页面上。
我所做的是将所有这些字段移到 list.gsp 中列表的第一行
但现在我不知道如何将它与其余数据连接起来并使其工作。
我必须让创建按钮工作。但是后来我无法使更新按钮起作用。
这是第一行的图片
一切都在第一行中创建,然后单击 CREATE 并使用放入文本字段中的所有数据创建新行。第一行没有 ID,但其他所有行都有。
我也让删除按钮工作。所以基本上唯一缺少的是更新按钮。
有任何想法吗??
提前致谢!
编辑
这是我在 Controller 中的内容:
def update = {
def densityInstance = Density.get(params.id)
if (densityInstance) {
if (params.version) {
def version = params.version.toLong()
if (densityInstance.version > version) {
densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing")
render(view: "list", model: [densityInstance: densityInstance,'Rcommodity':params?.Rcommodity])
}
}
densityInstance.properties = params
if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) {
flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}"
redirect(action: "list", id: densityInstance.id)
}
else {
redirect(action: "list", id: densityInstance.id)
}
}
else {
flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}"
redirect(action: "list")
}
}
而且由于 grails 是按列执行的,所以行有点乱,但它是:
<g:each in="${densityInstanceList}" status="i" var="densityInstance">
<g:form action="update">
<tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
<td>${fieldValue(bean: densityInstance, field: "id")}</td>
<td><g:textField name="Rcommodity" value="${densityInstance?.commodity}" class="input" onKeyPress="return alpha(event)"/> <img src="${resource(dir:'images/skin',file:'information.png')}" ></td>
<td><g:textField name="Rorigin" value="${densityInstance?.origin}" maxlength="3" size="5" class="input" onKeyPress="return alpha(event)"/> <img src="${resource(dir:'images/skin',file:'information.png')}" ></td>
<td><g:textField name="Rshipper" value="${densityInstance?.shipper}" size="3" class="input" onkeypress="return IsNumeric(event)"/> <g:textField name="RshipperName" value="${densityInstance?.shipperName}" size="15" class="input-b" onfocus="this.blur()"/> <img src="${resource(dir:'images/skin',file:'information.png')}" ></td>
<td><g:textField name="Ragent" value="${densityInstance?.agent}" size="3" class="input" onkeypress="return IsNumeric(event)"/> <g:textField name="RagentName" value="${densityInstance?.agentName}" size="15" class="input-b" onfocus="this.blur()"/> <img src="${resource(dir:'images/skin',file:'information.png')}" ></td>
<td><g:textField name="Rdest" value="${densityInstance?.dest}" size="5" class="input" onKeyPress="return alpha(event)"/> <img src="${resource(dir:'images/skin',file:'information.png')}" ></td>
<td><g:textField name="Rdensity" value="${densityInstance?.density}" size="15" class="input" onkeypress="return IsNumeric(event)"/></td>
<td><g:textField name="RAM" value="${densityInstance?.AM}" size="1" class="input"/></td>
<td width="100">
<g:form>
<g:hiddenField name="id" value="${densityInstance?.id}" />
<g:actionSubmit class="editar" action="update" value="${message(code: 'default.button.editar.label', default: ' ')}" />
<g:actionSubmit class="eliminar" action="delete" value="${message(code: 'default.button.eliminar.label', default: ' ')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Esta seguro que desea Eliminar?')}');" />
</g:form>
</td>
</tr>
</g:form></g:each>
最佳答案
为了摆脱 create.gsp 和 edit.gsp,您的 Controller 的操作应该与脚手架中的操作完全相同,除了 save{} 和 update{} 应该以
redirect(action: list)
为了使“更新”按钮起作用,每个“更新”都应将其表单(表格的一行)提交给“更新”操作。关于 update{} 的其他所有内容都应保持原样。
当然,该线形应该包含所有对象属性。
更新 在代码示例之后。
params
包含对象字段。 关于Grails:如何消除 create.gsp 和 save.gsp 并将其移动到 list.gsp 中列表的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998316/