JSF2忽略了Action attribut

Sve*_*ven 1 jsf jsf-2

我的xhtml代码:

<h:commandLink action="#{detailController.updateProject}" class="positive" >
 <h:graphicImage library="img" name="tick.png" alt=""/> 
 <h:outputText value="Save" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

不从JSF框架调用此操作(updateProject())!即使我在managedBean中删除它也没有抛出异常.

有没有人有这样的问题?我甚至无法解释--.-我的意思是这个行动方式就在那里!


ADD:是啊它是啊:表格标签!但是我在这个视图中有两种形式!可能那是问题吗?


ADD2:我还应该提一下,如果按下按钮,它会把我扔回上一个视图!所以我的操作方法被忽略了,而是打开了另一个视图?!?!

为了提供更多信息,我的页面构建如下:

panelGroup name=show rendered=!controller.edit
  form 
    buttons
    outputtext
  /form
/panelGroup

panelGroup name=edit rendered=controller.edit
   form
     buttons
     inputText
   /form
/panelGroup
Run Code Online (Sandbox Code Playgroud)

所以我有两个,在一个文件中编辑和显示一个实体!但只有底部形式的按钮才显示出奇怪的行为(见上文).


回答BalusC:1.我使用两种形式(它们没有嵌套!)2.在底部形式我已经放置了啊:消息我要尝试将我的控制器放入viewScop进行检查3和4我不知道如何检查5.谢谢你..

Bal*_*usC 5

这可能有很多可能的原因.@romaintaz只提到了最明显的一个(最常见的初学者的错误):UICommand组件必须放在UIForm组件内.

但是有更多原因:

  1. 您有多个嵌套表单.这在HTML中是非法的.行为取决于所使用的webbrowser,但通常按钮不会执行任何操作.您可能无法嵌套表单,但可以并行使用它们.

  2. 发生了验证或转换错误,但未被a捕获h:message.通常这会记录到stdout,但您也可以使用它h:messages来获取所有内容.

  3. UICommand组件被放置在UIData组件(例如h:dataTable)内,该组件value在后续请求期间未以正确的方式保留.如果JSF找不到关联的数据行,则不会调用该操作.将bean放在view范围内应该会有很大帮助.

  4. 组件或者其父母中的一个具有rendereddisabled其中评价属性false中应用请求值阶段.那时JSF不会调用该动作.将bean放在view范围内应该会有很大帮助.

  5. 一些PhaseListener,EventListener,FilterServlet在请求-响应链已经改变JSF生命周期跳过调用动作阶段的或改变的所述请求参数,使得JSF不能调用动作.


归档时间:

查看次数:

1931 次

最近记录:

15 年,5 月 前