我有一个ODK表单,配置为从数据库中获取数据列表并使用select
的数据列表。
问题是,当数据库中的查询返回空字符串时,我无法显示错误,而是在加载时ODK表单崩溃。我试过这个,
<instance id="books">
<list>
<g:if test="${Book.list()}">
<g:each in="${Book.list()}" var="book">
<book>
<id>${book.id}</id>
<name>${book.name?.encodeAsHTML()}</name>
</book>
</g:each>
</g:if>
<g:else>
<book>
<id></id>
<name></name>
</book>
</g:else>
</list>
</instance>
创建一个空id和空名称的xml。这可确保ODK在加载时不会崩溃。
但由于我不希望用户选择空的book
选项,因此我在bind nodeset
部分添加了约束,
<bind nodeset="/form/book" type="string" required="true()" constraint=". != ''" jr:constraintMsg="Book must be not be empty"/>
所以现在当用户试图通过书籍选择部分时,ODK表单不允许它,但是不是抛出我提供的约束消息而是抛出此错误
don't know xml value! perhaps selection was stored as index only and has not yet been linked up to a formdef?