我在xhtml文件中修改xform时遇到了麻烦。以前它工作,但现在我改变了xf:model的命名空间中的一些东西,现在当我按下提交按钮时它没有做任何事情。我将举一个简单的例子,以便您更好地理解我的问题,但请记住,我在一个包含400多行的xhtml文件中工作,而且我已经失去了几个小时(差不多40个)上周的小时数)逐行调试,反复试验,找出我的表格有什么问题。
<html namespaces come here>
<head>
<title>Example</title>
<xf:model schema="foobar.xsd">
<xf:instance>
<Persons xmlns="">
<name></name>
</Persons>
<xf:/instance>
</xf:model>
<xf:bind id=name nodeset="/Person/aluno" type="xs:string"/>
<xf:submission id="submit" action="http://localhost:8080/exist/rest/db/apps/foo/bar.xquery" method="post"/>
</head>
<body>
<h1>Type the name of the Person</h1>
<xf:input bind="name">
<xf:label>
<b>Name:</b>
</xf:label>
</xf:input>
<xf:submit submission="submit">
<xf:label>SUBMIT</xf:label>
</xf:submit>
</body>
</html>
好的,这是一个简单的例子(它可能有一些错误,并不重要),但想象一下,每次按SUBMIT它都不会做任何事情。 如何找到导致错误的原因?
答案 0 :(得分:0)
@loveMeansNothing以下错误消息:“未知XML根元素:wiki:article_container”您尚未在'html上声明命名空间xmlns:wiki =“http://www.generic-wiki.org/Wiki” '元素?此外,您在提交时缺少xforms @replace属性,这意味着它默认为replace =“all”(遵循XForms W3C建议),您是否尝试过@ repalce =“none”或@ replace =“instance”(取决于你想要存档的内容)?
关于betterFORM的调试@adamretter已经指出了在哪里查找日志以及如何启用调试栏。您还可以在提交中添加xforms-submit-error处理程序:
<xf:submission id="..." ...>
<xf:action ev:event="xforms-submit-error">
<xf:message>Submit Error! Resource-uri: <xf:output value="event('resource-uri')"/>
Response-reason-phrase: <xf:output value="event('response-reason-phrase')"/>
</xf:message>
</xf:action>
</xf:submission>
我经常使用Firebug进行调试。
如果这一切都无法解决您的问题,那么有一个表单的运行示例来重现错误会很棒。
答案 1 :(得分:0)
最后我找到了解决方案!
它错过了
调用的xquery上的一个愚蠢的斜线 <xf:submission id="submit" action="http://localhost:8080/exist/rest/db/apps/myapp/logic/action.xquery" method="post"/>
如果看起来像这样:
let $store:=xmldb:store('db/apps/myapp/data','test.xml', $newArticle)
虽然它应该看起来(见斜杠):
let $store:=xmldb:store('/db/apps/myapp/data','test.xml', $newArticle)
我也创建了一个新用户,并通过exists-db Java Admin Client将他添加到'dba'组。之后,我使用新的用户名凭据在上创建了一个新应用程序。此处也使用了该用户:
let $login:=xmldb:login('/db/apps/myapp','user','password')
感谢帮助人们:)