Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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中隐藏的s:的设置值_Javascript_Struts2_Hidden - Fatal编程技术网

javascript中隐藏的s:的设置值

javascript中隐藏的s:的设置值,javascript,struts2,hidden,Javascript,Struts2,Hidden,我有一个带有HTML输入字段的JSP,如“username”。我有一个JavaScript方法,其中我使用'document.getElementById('userId').value'获取此字段的值 现在我有了一个struts2标签: 在我的JavaScript中,在提交之前,我需要设置从输入文本字段到Struts 2隐藏标记字段的值。我不能直接使用输入字段中的文本,我需要将其设置为hidden Struts 2标记 为什么不能直接给隐藏字段赋值 Struts2输入标记最终会在页面呈现时转换

我有一个带有HTML输入字段的JSP,如
“username”
。我有一个JavaScript方法,其中我使用'document.getElementById('userId').value'获取此字段的值

现在我有了一个struts2标签:

在我的JavaScript中,在提交之前,我需要设置从输入文本字段到Struts 2隐藏标记字段的值。我不能直接使用输入字段中的文本,我需要将其设置为hidden Struts 2标记

  • 为什么不能直接给隐藏字段赋值
  • Struts2输入标记最终会在页面呈现时转换为普通HTML标记,因此无需为它们指定值。只需向隐藏元素提到一个id,并像通常那样使用javascript分配值

    <s:textfield id="mytext" value="yourvalue"/>
    <s:hidden id="myhidden" value=""/>
    
    
    function assignvalue(){
        document.getElementById("myhidden").value=document.getElementById("mytext").value;
    }
    
    
    函数赋值(){
    document.getElementById(“myhidden”).value=document.getElementById(“mytext”).value;
    }
    

  • Struts2标记只提供一些附加功能,以便更好地与Struts2 flow配合使用。它们就像助手一样,为您提供了一些开箱即用的功能,以便与Struts2密切配合

    最后,当浏览器显示JSP时,无论是struts2标记/您的自定义标记还是您正在使用的任何其他标记库,都将转换为浏览器可以理解的纯HTML

    所以如果你有一个文本字段,说

    <s:textfield name="username" id="username" value=""/>
    

    然后对这些值执行任何您想执行的操作。

    您可以将文本字段的值设置为“提交”按钮上的隐藏值

    让我们举个例子,
    首先必须为隐藏字段指定id,然后可以使用jquery或javascript进行设置

    下面是使用jquery设置它的示例

    这是你的表格

    这将从jquery设置用户名

    <script type="text/javascript">
                $(document).ready(function() {
                   $(document).on('click', '#s', function(event) {
                        event.preventDefault();
                        var name="Ram";
                        $("#uname").val(name);
                    });
                });
    </script>
    
    
    $(文档).ready(函数(){
    $(文档)。在('click','s',函数(事件){
    event.preventDefault();
    var name=“Ram”;
    $(“#uname”).val(姓名);
    });
    });
    

    如果是非常重要的数据,则将其保存到会话或任何其他范围,并直接将其发送到操作。不要将其显示到jsp页面

    如果您需要在提交之前执行此操作,则说明您做错了什么。这意味着您依赖客户机来保持您在服务器上指定的值——如果有人故意修改它并禁用您的JavaScript怎么办?您必须在服务器上强制执行此操作。隐藏标记实际上与表单变量匹配。因此,在提交到action类时,该变量被设置为表单变量。因此,我只需要通过javascript执行此操作。我还可以设置s:textfield,但我需要知道是否可以在javascript中设置s:hidden值,如果用户在不执行JS的情况下修改它,您将得到修改后的变量,而不是隐藏字段中的变量。我不明白这个问题。@DaveNewton似乎希望根据文本字段中提供的值设置一些隐藏字段。尽管动机不清楚为什么?问题是隐藏变量应该对应于Action类中定义的bean变量。当我使用s:textfield时,complte对齐就失控了。因此,我想提交隐藏变量的值,它应该对应于variableNow的形式。使用上面的方法,我设置了隐藏变量值,但是没有填充bean变量。我已经定义了Name是bean中的变量的位置。但是它不起作用。bean变量仍然是null…请帮助。那么,使用与bean变量相同的隐藏字段名称有什么问题??要解决文本字段的对齐问题,请尝试使用此格式-
    此格式如何
    document.getElementById("myhidden")
    
    <script type="text/javascript">
                $(document).ready(function() {
                   $(document).on('click', '#s', function(event) {
                        event.preventDefault();
                        var name="Ram";
                        $("#uname").val(name);
                    });
                });
    </script>