有没有办法让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}"(例如)我可以以某种方式获取它被调用的组件?
我正在使用ServletRequestListener附加新请求,获取ServletRequest对象并从中提取cookie.
我注意到只有HTTPServletRequestcookie但我没有找到这两个对象之间的连接.
可以使用吗?
HttpServletRequest request = ((HttpServletRequest) FacesContext.getCurrentInstance()
.getExternalContext().getRequest());
Run Code Online (Sandbox Code Playgroud)
在RequestInitialized方法中检索请求?(我确实希望在每个请求上运行)
仅供参考 - 这一切都在JSF 1.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都是会话作用域.
现在,以下单击将导致异常(对于每一行,最后一次单击会导致异常)
这不会导致异常:
换句话说,如果在最后20次单击中未单击表单中的按钮,则在下次单击时,将No save view state引发异常.
相同形式的所有按钮都等同于表单,这意味着,如果form A …
我正在尝试使用JSF 2运行一些基本的javascript代码.我使用以下代码来执行此操作:
<h:outputScript target="head">
var props = $.event.props;
</h:outputScript>
Run Code Online (Sandbox Code Playgroud)
查看页面的来源,我找不到任何有关此代码的证据.我认为这是在JSF中使用javascript代码的正确方法.我应该使用<script>html 的标签吗?
谢谢!
如何销毁会话范围的bean?
这样做的目的是控制bean的生命周期,使其仅在Web应用程序中的选项卡处于活动状态时才存在.(在webapp中使用基于Ajax的选项卡导航)
有没有更好的方法呢?(Custom Scoped Beans?)
<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值)
我究竟做错了什么?
我有一个组件,我首先分配一个工具提示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已为此组件创建工具提示来创建工具提示.
怎么办?
提前致谢!
我正在使用Eclipse Juno和JSF 2.1项目。
Facelets文件中的EL表达式自动完成速度非常慢。慢到我尝试使用20种左右的方法自动完成JSF Bean的地步时,Eclipse编辑器将挂起10-15秒,直到看到成员/属性列表。
从我的角度来看,我有2个解决方案,但我既不知道如何实现,因此任何帮助都会有所帮助。(优先于第一个)
解决速度慢的问题。我的猜测是,当我按ctrl-space时,Eclipse正在做很多我不需要的事情,并且如果可以禁用那些可以使其运行更快的东西。(有根据的猜测)
完全禁用El Expressions的自动完成功能并安装JBoss Tools(我必须说,它可以正常工作,但是当与本机自动完成功能结合使用时,它仍然挂在每个ctrl空间上)。
因此,任何一种解决方案都将有所帮助-解决缓慢问题或一起禁用自动完成功能。
提前致谢!!
我们有多个项目,包含各种.jscsrc文件.我想使用我定义的一个,比大多数项目更严格.
在我的情况下它~/.jscsrc.
如何配置sublime-linter使用该文件jscs?
谢谢!
我在类似的问题中找不到这个。
我正在尝试输入一个元素数量未知的元组。
我知道 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 个元素,但不适用于任何(动态)数量的元素。
如何以通用方式为任意数量的元素键入此内容?
谢谢!
jsf ×5
jsf-2 ×3
java ×2
ajax ×1
cookies ×1
eclipse ×1
eclipse-juno ×1
el ×1
facelets ×1
javascript ×1
jquery ×1
jquery-tools ×1
jscs ×1
performance ×1
servlets ×1
sublimetext3 ×1
typescript ×1
validation ×1