Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单验证清除JavaScript字段_Javascript_Validation_Jsf_Seam - Fatal编程技术网

表单验证清除JavaScript字段

表单验证清除JavaScript字段,javascript,validation,jsf,seam,Javascript,Validation,Jsf,Seam,我正在使用一个基于SEAM的JSF web应用程序。我有一个简单的表单,其中包括一个查找(弹出窗口),用于检索类别名称和ID(两者都是在没有问题的情况下检索的,并且存储在myView中)。当查找返回时,类别名称用于填充“selectedCategoryName”(使用Jquery) 当您尝试提交表单时,另一个字段验证失败(缺少简单必填字段),就会出现问题。我的所有其他字段保持不变,但selectedCategoryName被清除(即使bean仍然有它的值,因此修复验证错误并重新提交将解析为正确的

我正在使用一个基于SEAM的JSF web应用程序。我有一个简单的表单,其中包括一个查找(弹出窗口),用于检索类别名称和ID(两者都是在没有问题的情况下检索的,并且存储在myView中)。当查找返回时,类别名称用于填充“selectedCategoryName”(使用Jquery)

当您尝试提交表单时,另一个字段验证失败(缺少简单必填字段),就会出现问题。我的所有其他字段保持不变,但selectedCategoryName被清除(即使bean仍然有它的值,因此修复验证错误并重新提交将解析为正确的提交)。所以我的问题是,当表单验证失败时,如何保持显示“selectedCategoryName”中的值

提前谢谢

<s:decorate id="selectedCategoryField" template="/layout/edit.xhtml">
<span>
    <h:panelGroup rendered="#{! myView.persisted}">
    <img class="lookup" src="${request.contextPath}/images/lookup.gif" width="15" height="14" alt="" 
                        title="Category Lookup" 
                        onclick="return openNewWindow('${CategoryLookupUrl}?#{myView.lookupParameters}', 'id');"/>
    </h:panelGroup>

            <h:inputText id="selectedCategoryName" required="true" 
                        value="#{myView.selectedCategoryName}" 
                        size="50" 
                        readonly="true">

            <a:support event="onchanged" reRender="selectedCategoryField" ajaxSingle="true"/>
    <a:support event="oninputchange" reRender="selectedCategoryField" ajaxSingle="true"/>
            </h:inputText>
    </span>


问题是,实际上,由于
readonly=“true”
的原因,bean没有保存所选的值。将该属性应用于UIInput时,UIInput将不会在提交时处理

要解决此问题,您可以执行以下操作:
如果使用JSF2,则可以使用
readonly=“#{facesContext.renderResponse}”

如果没有,请在支持bean上定义一个方法
isReadonly
,并使用
readonly=“#{myView.isReadonly}”

请查看以下类似问题,尤其是答案,以获取有关此操作为何有效的更多详细信息:

public boolean isReadonly() {
    return FacesContext.getCurrentInstance().getRenderResponse();
}