当前位置: 首页 > 面试题库 >

在提交表单之前调用f:verbatim中的吸气剂

微生俊健
2023-03-14
问题内容

我有以下页面:

<h:form id="gameSelectionForm">
    <h:selectOneMenu id="gameSelection">
        <f:selectItems value="#{gameBean.gameIds}" />
    </h:selectOneMenu>
    <h:commandButton id="gameSelector" value="Play" action="#{gameBean.changeGame}"  />
</h:form>

<h:panelGroup id="gameDiv">
    <f:verbatim>
        <iframe src="/levelup/resources/games/#{gameBean.gameId}/#{gameBean.htmlPage}"  width="700px" height="800px" frameborder="0"/>
    </f:verbatim>
</h:panelGroup>

当我单击“ gameSelector”按钮时,事件的顺序如下:1. gameBean.getGameId和gameBean.getHtmlPage被称为2.
gameBean.changeGame被称为3.页面被刷新。

我的问题按1和2的顺序排列。changeGame修改了getGameId和getHtmlPage使用的gameBean变量。因此,我想先执行它,以便刷新其他面板时,它们包含正确的数据。

请注意,似乎仅在gameDiv元素内的调用会发生此问题(其他变量已正确刷新)。

您是否对如何还原1.和2.的顺序有任何想法,以便changeGame()方法是第一个调用的方法?

我在Tomcat 7.0上使用JavaServer Faces 2.0。

提前致谢


问题答案:

根据您自己对此主题的回答:

我删除了f:verbatim标记,现在它可以正常工作了。 我仍然不明白为什么它导致了这种现象。

<f:verbatim>在JSF 1.0长时间回来的唯一目的引入能够以包括JSF组件树纯HTML。在JSF
1.0(和1.1)上,当构建组件树时,所有纯HTML都将被忽略。该页面会首先呈现所有的纯HTML,然后JSF组件的HTML渲染 其后 。所以举个例子

<p>Hello</p>
<h:inputText />
<p>World</p>
<h:outputText value="outputtext" />
<p>This is weird</p>

被渲染为

<p>Hello</p>
<p>World</p>
<p>This is weird</p>
<input type="text" />
outputtext

<f:verbatim>允许开发商采取纯HTML到JSF组件树,使他们得到渲染的“同步”,你会从编码期望。

<f:verbatim><p>Hello</p></f:verbatim>
<h:inputText />
<f:verbatim><p>World</p></f:verbatim>
<h:outputText value="outputtext" />
<f:verbatim><p>This is weird</p></f:verbatim>

但是,它们在视图 构建 期间而不是在视图 渲染 期间内联。这是造成问题的原因,在还原视图阶段而不是渲染响应阶段会调用getter。

从JSF
1.2开始,使用改进的视图处理程序,可以“同步”内联纯HTML,而不会麻烦处理丑陋的<f:verbatim>标签。因此不再需要。标记也不再有有用的用例,可能会进行一些过早的性能优化,但是仍然如此,您不应该将其与Expression
Language获得的动态数据结合使用。



 类似资料:
  • 我试图在单击表单提交按钮时使用Jquery启动一个函数,但该函数需要在表单实际提交之前启动。 我试图在提交时将一些标记属性复制到隐藏的文本字段中,然后提交表单。 我已经通过使用功能(当提交按钮悬停在上方时)成功实现了这一点,但这在使用触摸的移动设备上不起作用。 我玩过提交函数,但是当表单提交时,而不是之前,函数会触发,所以值不会保存在字段中。 非常感谢。

  • 本文向大家介绍EasyUI中在表单提交之前进行验证,包括了EasyUI中在表单提交之前进行验证的使用技巧和注意事项,需要的朋友参考一下 使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return $("#form1").form('validate')方法即可,EasyUi中form模块中的from('validate')方法会自行对我们指定的表单

  • 问题内容: JavaScript位: HTML位: 这就是我要使用的代码。我的想法是在使用Ajax发送表单之前,先验证所有输入。我现在已经尝试过许多版本,但是每次即使表单没有完全填写,最终还是要提交。我所有的输入都是“必需”类的。谁能看到我做错了吗? 另外,由于我的输入名称是用php生成的,因此我依赖于基于类的要求,因此我永远无法确定自己获得的名称或输入类型。 我在“页面”中显示/隐藏问题。 JS

  • 问题内容: 有人可以帮助我迅速了解正确使用吸气剂和吸气剂的方法。我对它的印象与说Java不一样。 这是Swift中用于存储和访问类变量的正确用法吗? 问题答案: 斯威夫特提供了更结构化的方法来和比Java。 你可以,但你应该 不会 ,写getter和setter方法就像你在你的代码一样。 相反,(如果您使用)只需声明可见性为non的属性即可(例如,在我的示例中)。这样,您班级外的呼叫者将可以查看属

  • 本文向大家介绍yii form 表单提交之前JS在提交按钮的验证方法,包括了yii form 表单提交之前JS在提交按钮的验证方法的使用技巧和注意事项,需要的朋友参考一下  很多时候,需要对Yii表单model中的对象设置的rules进行判断,但是有的时候可能需要在提交之前就在客户端进行验证,我这边设置的方法是在提交按钮上设置监听器,如果部分内容为空(比如多选按钮没有选择),那么提示出错信息。主要

  • 问题内容: 您好,我正在实现一个登录页面,从PHP方面来看一切正常,但是现在我将使用jQuery实现另一个功能:我想检查登录字段是否为空,如果不是,则在页面上打印一些内容,否则继续用php,该怎么做? 这是我的HTML代码的一部分: 问题答案: 将事件绑定到表单的提交(注意:并非单击提交按钮)。那就是您的代码去检查表单的地方,并在必要时阻止其发布。 如果您希望显示消息而不是使用对话框,请在页面上某