- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
有时,当使用<h:commandLink>
,<h:commandButton>
或<f:ajax>
时,根本不会调用与该标记关联的action
,actionListener
或listener
方法。或者,不使用提交的UIInput
值更新Bean属性。
有哪些可能的原因和解决方案?
最佳答案
介绍
每当UICommand
组件(<h:commandXxx>
,<p:commandXxx>
等)无法调用关联的操作方法,或者UIInput
组件(<h:inputXxx>
,<p:inputXxxx>
等)无法处理提交的值和/或更新模型值,并且在服务器日志中看不到任何可谷歌搜索的异常和/或警告,也不会在您按照Exception handling in JSF ajax requests配置ajax异常处理程序时,或者在web.xml
中的上下文参数下方设置时,
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
UICommand
和
UIInput
组件必须放置在
UIForm
组件内部,例如
<h:form>
(因此不是纯HTML
<form>
),否则无法将任何内容发送到服务器。
UICommand
组件也必须不具有
type="button"
属性,否则它将是一个无效按钮,仅对JavaScript
onclick
有用。另请参见
How to send form input values and invoke a method in JSF bean和
<h:commandButton> does not initiate a postback。
UIForm
组件。这在HTML中是非法的。浏览器行为未指定。当心包含文件!您可以并行使用
UIForm
组件,但是它们在提交期间不会相互处理。您还应该提防“上帝形态”反模式;确保您不会无意间以相同的形式处理/验证所有其他(不可见的)输入(例如,具有相同格式的必填输入的隐藏对话框)。另请参见
How to use <h:form> in JSF page? Single form? Multiple forms? Nested forms?。
UIInput
值验证/转换错误。您可以使用
<h:messages>
显示任何输入特定的
<h:message>
组件未显示的消息。不要忘记在
id
中包含
<h:messages>
的
<f:ajax render>
(如果有的话),这样它也将在ajax请求中更新。另请参见
h:messages does not display messages when p:commandButton is pressed。
UICommand
或
UIInput
组件放置在诸如
<h:dataTable>
,
<ui:repeat>
等的迭代组件内,则需要确保在应用请求值期间保留与迭代组件完全相同的
value
表单提交请求的阶段。 JSF将在其上重申以找到单击的链接/按钮和提交的输入值。将bean放在视图范围内和/或确保将数据模型加载到bean的
@PostConstruct
中(因此不在getter方法中!)应该可以修复它。另请参见
How and when should I load the model from database for h:dataTable。
UICommand
)包含
UIInput
或
<ui:include src="#{bean.include}">
组件,则需要确保在表单提交请求的视图构建期间保留完全相同的
#{bean.include}
值。 JSF将在构建组件树期间重新执行它。将bean放在视图范围内和/或确保将数据模型加载到bean的
@PostConstruct
中(因此不在getter方法中!)应该可以修复它。另请参见
How to ajax-refresh dynamic include content by navigation menu? (JSF SPA)。
rendered
属性以及任何父级
test
/
<c:if>
的
<c:when>
属性不应求值为
false
。 JSF将对其进行重新检查,以作为防范被篡改/被黑客入侵的保护措施的一部分。将负责该条件的变量存储在
@ViewScoped
Bean中,或者确保已正确地在
@PostConstruct
Bean的
@RequestScoped
中预先初始化了该条件,可以对其进行修复。组件的
disabled
属性也是如此,在应用请求值阶段,该属性不应评估为
true
。另请参见
JSF CommandButton action not invoked和
Form submit in conditionally rendered component is not processed。
onclick
组件的
UICommand
属性和
onsubmit
组件的
UIForm
属性不应返回
false
或引起JavaScript错误。如果
<h:commandLink>
或
<f:ajax>
在浏览器的JS控制台中也没有可见的JS错误。通常,谷歌搜索确切的错误消息将已经为您提供了答案。另请参见
Adding jQuery to PrimeFaces results in Uncaught TypeErrors。
<f:ajax>
或例如使用Ajax PrimeFaces
<p:commandXxx>
,请确保您在主模板中有一个
<h:head>
,而不是
<head>
。否则,JSF将无法自动包含包含Ajax函数的必要JavaScript文件。这将导致浏览器的JS控制台出现JavaScript错误,例如“未定义mojarra”或“未定义PrimeFaces”。另请参见
h:commandLink actionlistener is not invoked when used with f:ajax and ui:repeat。
null
,则请确保感兴趣的
UIInput
和
UICommand
组件被
<f:ajax execute>
覆盖,例如
<p:commandXxx process>
,否则将不会执行/处理它们。另请参见
Submitted form values not updated in model when adding <f:ajax> to <h:commandButton>和
Understanding PrimeFaces process/update and JSF f:ajax execute/render attributes。
null
,并且您正在使用CDI管理Bean,则请确保从正确的包中导入范围注释,否则CDI将默认为
@Dependent
,这样可以在以下位置有效地重新创建Bean EL表达式的每个评估。另请参见
@SessionScoped bean looses scope and gets recreated all the time, fields become null和
What is the default Managed Bean Scope in a JSF 2 application?
<h:form>
按钮的
UICommand
的父级是事先通过来自同一页面中另一表单的ajax请求呈现/更新的,则第一个操作在JSF 2.2或更早版本中将始终失败。第二步和后续操作将起作用。这是由视图状态处理中的一个错误引起的,该错误报告为
JSF spec issue 790,目前已在JSF 2.3中修复。对于较旧的JSF版本,您需要在
<h:form>
的
render
中显式指定
<f:ajax>
的ID。另请参见
h:commandButton/h:commandLink does not work on first click, works only on second click。
<h:form>
设置了
enctype="multipart/form-data"
以支持文件上传,那么您需要确保至少使用JSF 2.2,或者要确保负责解析多部分/表单数据请求的servlet过滤器是正确配置,否则
FacesServlet
最终将根本没有任何请求参数,因此无法应用请求值。如何配置此类过滤器取决于所使用的文件上传组件。对于“战斧”
<t:inputFileUpload>
,请检查
this answer,对于PrimeFaces
<p:fileUpload>
,请检查
this answer。或者,如果您实际上根本没有上传文件,请完全删除该属性。
ActionEvent
的
actionListener
参数是
javax.faces.event.ActionEvent
而不是
java.awt.event.ActionEvent
,这是大多数IDE建议的第一种自动完成选项。如果使用
actionListener="#{bean.method}"
,则没有参数也是错误的。如果您不想在方法中使用参数,请使用
actionListener="#{bean.method()}"
。或者,也许您实际上想使用
action
而不是
actionListener
。另请参见
Differences between action and actionListener。
PhaseListener
或任何
EventListener
更改了JSF生命周期以通过例如调用
FacesContext#renderResponse()
或
FacesContext#responseComplete()
来跳过调用动作阶段。
Filter
或
Servlet
以某种方式阻止了
FacesServlet
的请求。
<p:dialog>
或
<p:overlayPanel>
,请确保它们具有自己的
<h:form>
。因为,默认情况下,JavaScript将这些组件重定位到HTML
<body>
的末尾。因此,如果他们最初坐在
<form>
内,那么现在他们将不再坐在
<form>
中。另见
p:commandbutton action doesn't work inside p:dialog
rich:calendar
属性(或在某些情况下为
defaultLabel
子元素)的
rich:placeholder
UI元素时,RichFaces具有“
conversion error”。当没有为日历日期设置任何值时,此错误阻止Bean方法被调用。跟踪框架的错误可以通过从一个简单的工作示例开始并备份页面直到发现该错误来完成。
<f:ajax>
的情况下提交启用
<h:head>
按钮的情况(如以上第7点所述)。
<h:inputText>
和一个
<h:commandButton>
带有
<f:ajax execute="@form" render="@form">
。
UICommand
组件,则为
UICommand#queueEvent()
;如果是
UIInput
组件,则为
UIInput#validate()
。只需逐步执行代码并检查流程和变量是否符合预期即可。屏幕截图下方是Eclipse调试器的示例。
关于jsf - 未调用commandButton/commandLink/ajax操作/监听器方法或未设置/更新输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43290292/
今天我有一个非常简单的任务需要帮助。首先让我解释一下我的环境。我们正在使用 Java/Hibernate/SEAM/Facelets/JSF/RichFaces 和 A4J 设置..我对此了解不多。
f:param与 h:link 配合使用效果很好,但不是 p:commandLink或 h:commandLink . 例如,我有两页 test_first.xhtml和 test_second.xh
我最近开始做一些JSF工作-在此之前,我一直使用PHP或Python进行Web开发。 当我发现使用h:commandLink标记时,JSF使用HTTP POST进行导航时,我感到有些惊讶。 我一直在使
环境:Tomcat 6、jsf 2.0、prime faces 2.2.1、chrome 浏览器 我想单击左侧伸展树(Splay Tree)中的“查看详细信息”链接并显示产品的详细信息。但下面的代码不
我正在尝试在我的应用程序 (Seam/RichFaces) 中显示购物车,并包含“从购物车中删除”旁边的每个项目以从购物车中删除该项目。当我单击该链接时,它应该重新呈现购物车内容以显示该项目已被删除。
当我创建一个包含分面的复合组件并在该分面内放置一个命令链接时,我收到一条错误消息:This link is disabled as it is not nested within a JSF form
我对 有疑问.我想制作悬停效果,但无法将图像加载到 通过 CSS。 CSS: .accountEditBtn { background-image: url('#{request.c
我是新手,但我的操作没有被触发。在 a4j:commandLink id="linklogout"中,我添加了一个不起作用的新操作 menubean.resetMenuActionVariables
我的树表中有很多命令链接,我动态构建它们,如果我想在单击一个命令链接时更改它的颜色,所有命令链接都会更改它们的颜色,我不知道如何做更改此指定链接的颜色,因为我不知道她的号码或 ID,如果有人知道答案,
我有以下 XHTML: TODO supply a title
我有一个包含两个 JSP 的 JSF 应用程序:login.jsp 和 main.jsp。 我有以下 faces-config.xml: package.programs.scorecard.b
写作能力不足请谅解。 我正在测试制作自定义凭证提供程序。我想创建一个 CommandLink 来对提交按钮做同样的事情。我想通过 CommandLink 与“提交”按钮分开登录。目前,只有自定义凭证提
我正在开发一个 JSF 应用程序并想要一个简单的功能 - 单击命令按钮并显示一个命令链接。我做了一个测试。代码: function testfunc() { docu
我在我的应用程序中使用了 icefaces commandLink,我想在水印中添加一个图标。我在 commandLink 中添加了一个属性 styleCss="disconnect",但在渲染过程中
这是我的代码。我在面板网格内有两个图像,这两个图像放置在动画 Javascript 渐变之上。当左侧图像与右侧的注销图标平行放置时(如图所示),注销功能不起作用。当我删除左侧图像时,注销功能正在运行。
我想知道是否可以将 h:commandLink 嵌套到 h:outputFormat 消息中,例如: 消息.属性 disclaimerLink=Click {0] for Disclaimer 现在我
谁能告诉我如何在 WPF 窗口中添加 CommandLink 控件? 这就是我所说的 CommandLink 的意思:http://msdn.microsoft.com/en-us/library/a
如何使用 commandLink 显示图标: outputText (Add) 不可见。 commandLink 支持图标的正确方法是什么?谢谢。 最佳答案
我在延迟加载 Primefaces Datascroller 时遇到问题成分。 我有一个 jsf 页面,它应该在页面加载时显示 10 个事件。如果用户想要查看更多,他/她可以单击更多按钮加载并显示 1
我想使用我的 faces-config.xml (JSF 2.0) 的导航规则功能,但我遇到了一些问题。我有三个文件(index.xhtml、index2.html、index3.xhtml),它们看
我是一名优秀的程序员,十分优秀!