我有一个现有的应用程序,它是一个前端应用程序,它从外部Web服务中检索所有信息。我想使用Grails框架重新创建此应用程序,但用例有点奇怪。 Grails是模型驱动的。在这种情况下,我真的没有数据库表。我的数据是通过Web服务调用实时接收的。我对社区的问题是你将如何实现以下用例:
员工搜索:
这里是未知部分:获取这些结果并将其融入Grails模型的最佳方法是什么?换句话说,我需要显示结果的数据网格(搜索结果)。网格应该像Grails列表操作一样工作,允许用户对特定列,分页等进行排序。
答案 0 :(得分:3)
创建Grails应用程序没有一种方法。应用程序通常会使用可以轻松访问关系数据库表中数据的域类,但您可以轻松切换到NoSQL数据存储区,甚至不像应用程序那样使用直接持久性。
您的问题的简单答案是,您应该在src/groovy
和src/java
中创建非持久性数据类,以表示您正在使用Web服务调用的数据。您仍然可以将Grails用于其控制器和GSP,标记库,服务(当然,非事务性,因为不会有数据库访问),并且还可以利用许多可用的插件。
使用标准生成的控制器和GSP来显示带有排序和分页的数据,您不必做太多工作。生成脚本确实需要域类,但是你可以作弊来获取那些生成的(当然你总是可以手工编写代码)。例如,如果您在src / groovy / com / yourcompany中有Person类,请将其移至grails-app/domain
:
package com.yourcompany
class Person {
String firstName
String lastName
}
然后运行grails generate-all com.yourcompany.Person
,它将创建控制器及其单元测试和GSP。现在将其移回src/groovy
并根据需要使用它。 GSP不期望域类,它们只是期望单个类实例或实例列表。
您需要将控制器调用转换为person.save()
之类的内容才能使用您的Web服务,但大部分代码都应该是可重用的。
您可以利用的一件事是验证。您可以使用@Validateable
注释类并定义约束以利用非持久类的Grails验证 - 有关详细信息,请参阅the documentation。