2011-12-30 50 views
4

在我的Wicket应用程序的页面的基本模板,有一个形式,我不想检票处理,像这样:为什么Wicket会更改非Wicket表单标签的动作属性?

<form id="myForm" action=""> 
    <!-- input fields and submit button --> 
</form> 

我离开action属性空总是发送到当前页面。在应用程序的主页上,它可以工作,但在其他页面上,Wicket在action属性中添加了“../”,这似乎意味着很好,但不是我想要的。

我正在使用Wicket 1.4.17。我怎样才能停止或改变这种行为?

该表单旨在使用户能够向站点管理员提交短消息作为反馈。它出现在每个页面上,输入从PageParameters收集到我页面基类的构造函数中。如果有更多Wicket的方式来做到这一点,我会欣赏提示,但这应该是a)无状态和b)非常简单。

+0

听起来像是Wicket自动插入上下文路径。您是否尝试添加AttributeModifier而不是设置HTML标记的action属性? – weltraumpirat 2011-12-31 02:12:18

回答

1

我会采用Wicket的方式,为您的反馈表单编写一个组件,然后插入到每个页面中。由于您拥有所有页面的(抽象)基类,因此您可以简单地将其添加到每个页面上。

在您的反馈表单组件中,只需覆盖onSubmit()方法并将消息发送到站点管理员。

+0

这是无状态的,并且总是重定向到始发页面吗?我不希望表单组件导致我的所有页面序列化到会话中。 – 2012-01-10 14:43:55

+0

@HannoFietz AFAIK完全为此目的而存在[StatelessForm](http://wicket.apache.org/apidocs/1.5/org/apache/wicket/markup/html/form/StatelessForm.html)。在'onSubmit()'方法中,你可以调用'setResponsePage(getPage()。getClass())'来实现重定向。如果您还必须尊重页面参数,则必须将它们传递给组件。如果你想有更多的证据,你也可以使用'wicket-devutils'库,特别是'StatelessComponent'和相关的'StatelessChecker'。 – r3nj1 2012-01-10 15:08:25