2011-12-27 42 views
1

我有一个JSP与像"username" HTML输入字段。我有一个JavaScript方法,我使用`document.getElementById('userId')。value来获得这个字段的值。设定值:隐藏在JavaScript

现在我有一个Struts2的标签:<s:hidden name="username" />

在我的JavaScript,在提交前,我需要从输入文本字段的值设置为Struts 2的隐藏标记字段。我无法直接从输入字段使用文本,我需要将其设置为隐藏的Struts 2标签。

+0

如果你需要,你正在做的事情不对在提交之前做到这一点。这意味着您依赖客户端来保持您在服务器上指定的值 - 如果某人故意修改它并禁用JavaScript,该怎么办?你**必须**在服务器上执行这样的事情。 – ThiefMaster 2011-12-27 11:52:34

+0

隐藏的标签实际上与表单变量相匹配。所以在提交给动作类时,变量被设置为表单变量。因此,我需要通过javascript来做到这一点。我可以设置为:textfield也可以,但我需要知道如果有可能在JavaScript中设置s:hidden值..... – ITAmateur 2011-12-27 12:08:11

+0

好吧,如果用户修改它而没有执行JS,您将获得修改后的变量而不是隐藏字段中的变量。 – ThiefMaster 2011-12-27 12:09:12

回答

1
  1. 为什么不能直接给价值隐藏字段?
  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; 
    } 
    
+0

问题是,隐藏变量应该对应于Action类中定义的bean变量。当我使用s:textfield时,complte对齐将会失灵。因此,我想从隐藏的变量中提交值,该变量应该对应于表单变量 – ITAmateur 2011-12-27 12:18:16

+0

现在使用上面的方法,我的隐藏变量值被设置,但是bean变量没有被填充。我已经定义了其中Name是一个bean中的变量。但它不工作,bean变量仍然是nulll ....请帮助 – ITAmateur 2011-12-27 12:20:14

+0

那么,什么是使用相同的名称隐藏字段为您的bean变量?为了解决你的文本字段的对齐问题,试试使用这种格式 - “' – anu 2011-12-27 12:22:50

0

Struts2的标签分配值只提供了一些额外的功能与Struts2的flow.They更好的工作,就像帮手,给你一些开箱即用的功能与struts2紧密合作。

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

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

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

它会在最终的显示转换为HTML像

<input type="text" name="username" id="username" value=""> 

不过请注意,如果你不为你的文本字段提供id struts2的将本身,所以如果你想为文本字段自定义ID生成ID,而标签代码转换为最终的HTML /任何其他领域给它明确。

所以你把所有的方式来使用JavaScript的出名方式

document.getElementById("myhidden") 

,做你想要的值做什么都。

0

您可以将文本框的值设置为上提交按钮的隐藏价值。

让向您展示一个例子, <script type="text/javascript>

function setHiddenValue(){

document.getElementById('hiddenfield').value = document.getElementById('textfield'); }

</script>

<s:hidden name="hiddenfield" id="hiddenfield" />

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

<input type="submit" onclick="setHiddenValue();" />

1

首先,你必须给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> 

如果它是非常重要的数据,然后将其保存到会话或任何其它范围,并直接得到它的行动不表露出来JSP页面