1

表单的body字段可能包含长文本,因此默认的 String 属性不会这样做。

寻找如何使数据存储使用文本(这不是我从 Python 版本中回忆的实体定义的一部分),我在 ackbar 博客的源代码中找到了这个:

(ns <snip>
  (:import (com.google.appengine.api.datastore
            EntityNotFoundException Text)))
<snip>
(ds/save! (Post. url title (Text. body) ts in-feed? category))

但如果我这样做,我会得到:“java.lang.RuntimeException:java.lang.IllegalArgumentException:不知道如何从:com.google.appengine.api.datastore.Text 创建 ISeq”

(一个显着的区别是我正在查看的 ackbar 使用 appengine-magic 0.3.2。)

我也尝试过https://github.com/gcv/appengine-magic#readmeas-text上简要提到的,但在那里会导致与上述相同的错误消息。(as-text body)


编辑:原来问题实际上并不是将 Text 属性放入商店,而是在检索它时理解它。我的提交处理程序触发保存,然后重新加载表单页面,我没有想到这一点。对不起,噪音。

在不打嗝的情况下获得价值的方法是(.getValue body)

4

1 回答 1

2

来自 appengine-magic 文档:

as-text:将字符串转换为 com.google.appengine.api.datastore.Text。

所以你应该传递一个java.lang.Stringto as-text

(as-text body)
于 2011-04-01T11:35:08.227 回答