小编Ben*_*Ben的帖子

从<h:inputText>获取空字符串进行验证

有没有办法让jsf验证器处理空字符串?我有一个针对所有inputTexts的自定义验证器.我不想实现"必需"标记,而是希望客户处理程序处理空字符串,并在支持bean中确定该字段是否是必需的.

<h:inputText id="SSID_STR" styleClass="propertyInput" value="#{wifiDM.SSIDStr}" validator="#{wifiDM.validate}" >
    <h:message for="SSID_STR" fatalClass="mandatoryFieldMissing" tooltip="true" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

如果我必须添加所需的标记,我必须为我的应用中的每个输入文本执行此操作:

<h:inputText id="SSID_STR" styleClass="propertyInput" value="#{wifiDM.SSIDStr}" validator="#{wifiDM.validate}" required="#{wifiDM.isRequired} requiredMessage="*">
    <h:message for="SSID_STR" fatalClass="mandatoryFieldMissing" tooltip="true" />
    <f:attribute name="InputID" value="SSID_STR">
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

这是一个烂摊子......


更新(澄清) 首先,使用JSF 1.2.每个字段在需要或不需要的意义上是独立的,因此组件依赖性的问题是无关紧要的.我的目标是通过验证器传递null值,因此我不必将两个标记添加到inputText.

此外,Validator处理程序将'component'作为参数,这意味着我可以获取其ID并实时查看是否需要它.(可能并不总是需要相同的组件).

如果我使用required="#{bean.requireCheck}"(例如)我可以以某种方式获取它被调用的组件?

validation jsf

4
推荐指数
1
解决办法
6269
查看次数

从ServletRequest获取Cookie

我正在使用ServletRequestListener附加新请求,获取ServletRequest对象并从中提取cookie.

我注意到只有HTTPServletRequestcookie但我没有找到这两个对象之间的连接.

可以使用吗?

HttpServletRequest request = ((HttpServletRequest) FacesContext.getCurrentInstance()
                .getExternalContext().getRequest());
Run Code Online (Sandbox Code Playgroud)

RequestInitialized方法中检索请求?(我确实希望在每个请求上运行)

仅供参考 - 这一切都在JSF 1.2应用程序中完成

java cookies jsf servlets servlet-listeners

4
推荐指数
1
解决办法
1万
查看次数

JSF 2查看过期的最奇怪的错误(更新 - 仅在将状态保存到服务器时发生)

错误是这样的 - 我的JSF应用程序中有几个表单.如果我在特定表单之外激活AJAX调用20次或更多次,我会得到一个"No Saved View State Could be found for the view identifier"例外.

更新1仅当状态保存在服务器上时才会发生.设置此选项时,不会发生此问题:

<context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

更新结束1

例如,假设我的应用程序中有表单A,表单B和表单C:(执行应用程序非常复杂,我将尝试提供所有相关信息)

<h:form>
  <h:commandButton value="A">
    <f:ajax render="@form"/>
  <h:commandButton>
<h:form>

<h:form>
  <h:commandButton value="B">
    <f:ajax render="@form"/>
  <h:commandButton>
<h:form>

<h:form>
  <h:commandButton value="C">
    <f:ajax render="@form"/>
  <h:commandButton>
<h:form>
Run Code Online (Sandbox Code Playgroud)

一个更重要的因素,每个时间点只能看到一种形式,其他形式则有display:none.最后,所有bean都是会话作用域.

现在,以下单击将导致异常(对于每一行,最后一次单击会导致异常)

  1. Ax20,B
  2. Ax19,B,C
  3. Ax10,Cx10,B
  4. Bx5,Cx5,Bx5,Cx5,A

这不会导致异常:

  1. Ax18,B,C,A.

换句话说,如果在最后20次单击中未单击表单中的按钮,则在下次单击时,将No save view state引发异常.
相同形式的所有按钮都等同于表单,这意味着,如果form A …

ajax jsf jsf-2

4
推荐指数
1
解决办法
1844
查看次数

使用<h:outputScript>在JSF中添加javascript代码

我正在尝试使用JSF 2运行一些基本的javascript代码.我使用以下代码来执行此操作:

<h:outputScript target="head">
    var props = $.event.props;
</h:outputScript>
Run Code Online (Sandbox Code Playgroud)

查看页面的来源,我找不到任何有关此代码的证据.我认为这是在JSF中使用javascript代码的正确方法.我应该使用<script>html 的标签吗?

谢谢!

javascript jsf jsf-2

4
推荐指数
1
解决办法
2万
查看次数

JSF 2 - 如何销毁会话范围的bean

如何销毁会话范围的bean?

这样做的目的是控制bean的生命周期,使其仅在Web应用程序中的选项卡处于活动状态时才存在.(在webapp中使用基于Ajax的选项卡导航)

有没有更好的方法呢?(Custom Scoped Beans?)

jsf-2

4
推荐指数
1
解决办法
1万
查看次数

这个el表达有什么不对?

<ui:repeat value="#{admin.detailTypesList}" var="detailType">
<h:outputText value="#{admin.getDetailTypeTranslation('ContactDetailType_'+detailType)}"/>
</ui:repeat>
Run Code Online (Sandbox Code Playgroud)

对于el表达:

#{admin.getDetailTypeTranslation('ContactDetailType_'+detailType)}
Run Code Online (Sandbox Code Playgroud)

传递给的参数getDetailTypeTranslation'ContactDetailType_'(没有detailType值)

我究竟做错了什么?

java el

3
推荐指数
1
解决办法
231
查看次数

检查是否已将jquery工具工具提示分配给组件

我有一个组件,我首先分配一个工具提示mouseenter(一种懒惰的工具提示分配给组件)

我使用惰性方法,因为有许多工具提示可用的组件,我不想为所有这些组件预先分配工具提示.

$(document).delegate(".tooltipable", "mouseenter", function () {
    $(this).tooltip(... options ...);
    $(this).tooltip().show(); // The tooltip will not appear on first `mouseenter` so I have to explicitly show it here
});
Run Code Online (Sandbox Code Playgroud)

这很好用.我想改进它,因此不会mouseenter通过检查是否tooltip已为此组件创建工具提示来创建工具提示.

怎么办?

提前致谢!

jquery jquery-tools jquery-tooltip

3
推荐指数
1
解决办法
3203
查看次数

Eclipse(Juno)挂在JSF EL Expression Auto Complete上

我正在使用Eclipse Juno和JSF 2.1项目。

Facelets文件中的EL表达式自动完成速度非常慢。慢到我尝试使用20种左右的方法自动完成JSF Bean的地步时,Eclipse编辑器将挂起10-15秒,直到看到成员/属性列表。

从我的角度来看,我有2个解决方案,但我既不知道如何实现,因此任何帮助都会有所帮助。(优先于第一个)

  1. 解决速度慢的问题。我的猜测是,当我按ctrl-space时,Eclipse正在做很多我不需要的事情,并且如果可以禁用那些可以使其运行更快的东西。(有根据的猜测)

  2. 完全禁用El Expressions的自动完成功能并安装JBoss Tools(我必须说,它可以正常工作,但是当与本机自动完成功能结合使用时,它仍然挂在每个ctrl空间上)。

因此,任何一种解决方案都将有所帮助-解决缓慢问题一起禁用自动完成功能。

提前致谢!!

eclipse performance jsf facelets eclipse-juno

3
推荐指数
1
解决办法
1879
查看次数

如何选择自定义.jscsrc文件

我们有多个项目,包含各种.jscsrc文件.我想使用我定义的一个,比大多数项目更严格.

在我的情况下它~/.jscsrc.

如何配置sublime-linter使用该文件jscs

谢谢!

sublimelinter sublimetext3 jscs

3
推荐指数
1
解决办法
2163
查看次数

打字稿:如何键入大小未知的不同类型的元组?

我在类似的问题中找不到这个。

我正在尝试输入一个元素数量未知的元组。
我知道 Typescript 4 添加了对可变元组的支持

尽管我阅读了文档,但我无法理解它

例子很简单:


function map<S, T, U, Z>(values: [S, T, U], mapper: (s: S, t: T, u: U) => Z): Z {
    return mapper(...values);
}


const v = map([1, 'hello', 3], (s, t, u) => `${s + t + u}`);
Run Code Online (Sandbox Code Playgroud)

打字稿游乐场链接

这适用于 3 个元素,但不适用于任何(动态)数量的元素。
如何以通用方式为任意数量的元素键入此内容?

谢谢!

typescript

3
推荐指数
1
解决办法
318
查看次数