【问题标题】:Retrieve values from JSP to Javascript从 JSP 检索值到 Javascript
【发布时间】:2011-08-17 07:44:19
【问题描述】:

以下是我的 JSP 页面上的 javascript:

<SCRIPT language="JavaScript">
function checkPass(){

var pass1=request.getParameter('password');
var pass2=request.getParameter('password2');

    if (pass1==pass2){
        window.alert("YES");
    }
    else{
        window.alert("NO");
    }
    }
</SCRIPT>

下面是我的表单输入文本框:

                    <h:outputLabel value="Password:" for="password" />
 <h:inputSecret id="password" value="#{StaffController.staff.password}" 
            size="20" required="true"
            label="Password" >
            <f:validateLength minimum="8" />
        </h:inputSecret>

        <h:message for="password" style="color:red" />

                    <h:outputLabel value="Password:" for="password2" />
 <h:inputSecret id="password2" 
            size="20" required="true"
            label="Password" >
            <f:validateLength minimum="8" />
        </h:inputSecret>
 <h:message for="password2" style="color:red" />

下面是我的命令按钮与 onmousedown 链接以在单击时调用脚本:

<h:commandButton action="#{StaffController.saveUser()}" onmousedown="checkPass();" value="Submit"/>

我似乎无法从我的用户输入表单中检索值。

【问题讨论】:

    标签: java netbeans


    【解决方案1】:
    1. JSF 更改组件的 id - 在浏览器中查看页面的源代码。应该是form id+component id的组合

    2. 提交命令在提交之前调用 onmousedown 事件,所以在 checkPass 中你没有请求对象

    3. 最好编写一个自定义验证器来检查密码

    【讨论】:

      【解决方案2】:

      首先,您需要在 h:form 中将值 false 设置为“prependId”属性,以便在 javascript 上通过 id 获取文本框。不建议删除 prependId。但它使您更容易使用 javascript。以其他方式,您可以使用字段名称或 css 名称其他类型的选择(例如使用 Jquery $('.cssname') 或 $('#cssid')

      现在您需要更改 javascript。 javascript 在客户端执行。您无法从请求中获取数据,因为执行 javascript 时请求未完成。

      你需要得到 inputSecret 对象,它在 html 中是一个输入项,使用如下:

      var pass1 = document.getById('password').value;
      var pass2 = document.getById('password2').value;
      

      【讨论】:

      • 所以在我改变这两行之后它很可能会工作,没有别的?将 h:form 值 false 更改为“prependld”是什么意思?
      • 如果您不添加到
        标记(需要包含整个表单),则您的 jsf 上的 prependId="false" 生成的 HTML 代码中元素的 id 是使用自动化过程定义,该过程生成不可预测的 ID,而不是添加到控件中的 ID。您可以在导航器中查看最终页面的 html 源代码来查看它。
      • 所以 h:form 标签应该一直覆盖我的脚本,直到我的命令按钮?
      • 我从脚本的开头添加了
        ,一直到我的命令按钮 之后。但是表单仍然运行而不进行比较
      • 投反对票。不要添加prependId="false",错误的选择:stackoverflow.com/questions/7415230/…,只需阅读stackoverflow.com/questions/8634156/… 并了解如何获得正确的 id:stackoverflow.com/questions/8634156/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 2017-08-18
      • 2023-04-02
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多