【发布时间】:2011-08-29 07:30:00
【问题描述】:
我想创建一个将记录保存和检索到 GAE 服务器的应用程序。我按照教程“部署到 Google App Engine”http://code.google.com/webtoolkit/doc/latest/tutorial/appengine.html 开始操作。
我的 StockWatcher 应用程序现在正在运行,但在我的应用程序中我需要存储一个可能很大 (>10KB) 的字符串。我读到我不能使用 Java String 类型来存储大字符串,而需要使用 Text 数据类型。
我认为文本是指:com.google.appengine.api.datastore.Text,但最好确认这是正确的。 ???
无论如何,我无法让 Text 工作。经过一些研究,似乎 Key 和 Text 类型都只能在服务器代码中使用,而不能在客户端代码中使用。这似乎是因为这些类的源代码不可用,而 GWT 需要源代码才能在客户端计算机上创建 JavaScript 代码。至少我目前关于为什么会出现以下错误的工作假设:
21:52:52.823 [ERROR] [myapp] Line 15: The import com.google.appengine.api.datastore cannot be resolved
21:52:52.951 [ERROR] [myapp] Line 103: Key cannot be resolved to a type
21:52:53.011 [ERROR] [myapp] Line 106: Text cannot be resolved to a type
我在共享文件夹的类中使用以下字段。
共享/MyDataRecord
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private Text description;
共享文件夹中的 MyDataRecord 类,因为我想用一个 get 方法返回所有字段,而不是多个单独的字段 get 方法。这是我在 server/DataServiceImpl.java 类中使用 MyDataRecord 类的方法
public class DataServiceImpl extends RemoteServiceServlet implements DataService
{
...
@Override
public MyDataRecord getDataRecord() throws NotLoggedInException
{
...
我看到一些已发布的解决方案建议使用非标准的第 3 方库,例如 http://www.resmarksystems.com/code/。我无法安装这个,但即使可以,我更喜欢不同的解决方案。存储文本必须是一项常见的任务,我更愿意使用被认为是标准解决方案的方法来解决这个问题。
我可以更改我的代码以在多个 get 方法中返回每个字段,而不是单个返回 MyDataRecord 实例。然而,即使这样有效,随着时间的推移,这将是更多的工作并且更难以维护。但是,如果这是通常所期望的,那么这就是我要做的。
我想使用 GWT 和 GAE 认为的最佳做法来解决这个问题。一个简单的例子或教程会有很长的路要走,但我找不到。
是否有示例程序/教程展示了 GWT 认为存储和检索大字符串的最佳实践?
我是 GWT 和 GAE(以及 Web 开发)的新手,请在任何回复中考虑这一点,谢谢。
请不要打蛇
【问题讨论】:
-
举个例子是回答这个问题的最简单方法。
标签: java string google-app-engine gwt google-cloud-datastore