从 jsp 到 struts2 操作类获取禁用的真实数据

发布于 2024-12-14 06:33:19 字数 217 浏览 0 评论 0原文

我的 jsp 中有 disabled=true 文本框和组合框。

当我尝试将这些价值映射回行动时,它们就消失了。

我不想再给DB打电话了。

如何将这些disabled=true 文本框组合框的数据值设置为隐藏值

先谢谢了。

I have disabled=true textboxes and combox boxes in my jsp.

When I try to map those value back to action, they disappear.

I don't want to call to DB again.

How can I set those disabled=true textboxes and combo boxes's data value into hidden values?

Thanks ahead.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无语# 2024-12-21 06:33:19

禁用元素的值不随表单提交的属性不是 struts2 的问题,而是 HTML 行为。要处理此行为,请使用以下实现:

  1. 使用 readonly="readonly" 属性来防止修改,而不是使用禁用。 (这对于少数元素不可用)
  2. 使用 onfocus="return false" 来防止焦点集中在 html 元素上。这将防止修改它们的值。您可以使用 CSS 使这些元素看起来像是只读或禁用的。
  3. 在禁用元素之前,请创建一个隐藏元素并附加要禁用的元素的值。这将确保该项目得到提交。

请参阅以下 select 元素的实现。您可以使用 s:select 的 id 属性来设置 select 元素的 html id。

<select id="demoSelect" class="readonly">
    <option value="0">A</option>
    <option value="1">B</option>
    <option value="2" selected="selected">C</option>
    <option value="3">D</option>
    <option value="4">E</option>
    <option value="5">F</option>
</select>
<input type="hidden" value="2" name="demoSelectDefault"/>

jQuery:

$(document).ready(

    function() {
        $("select.readonly").live('change', function() { //live() makes sure that this is executed if you apply the class to the element even after the initial load. So, if you set the readonly class to a select element, you are done.
            var selectElement = this;       
            $("input[type=hidden][name=" + this.id + "Default]").each( //This is implemented in case of multiple select support. You will need to select nothing at first and then make this select each of this element
                function() {
                    selectElement.value = this.value;
                }
            );

        });
    }

);

在这里,当您使用 struts 实现此功能时,填充 s:select,然后使用 s:hidden 元素生成相应的默认值。

The property of disabled elements' value not being submitted with the form is not an issue with struts2, but an HTML behavior. To handle this behavior, use the following implementations:

  1. Use readonly="readonly" attribute to prevent modification rather than using disabled. (This won't be available for few elements)
  2. Use onfocus="return false" to prevent any focus on html elements. This will prevent the modification of their value. You can use CSS to make these elements look like readonly or disabled.
  3. Before you disable an element, create a hidden element and attach the value of the element you are about to disable. This will make sure that the item gets submitted.

See the following implementation for select element. You may make use of the id attribute of s:select to set the html id of select element.

<select id="demoSelect" class="readonly">
    <option value="0">A</option>
    <option value="1">B</option>
    <option value="2" selected="selected">C</option>
    <option value="3">D</option>
    <option value="4">E</option>
    <option value="5">F</option>
</select>
<input type="hidden" value="2" name="demoSelectDefault"/>

jQuery:

$(document).ready(

    function() {
        $("select.readonly").live('change', function() { //live() makes sure that this is executed if you apply the class to the element even after the initial load. So, if you set the readonly class to a select element, you are done.
            var selectElement = this;       
            $("input[type=hidden][name=" + this.id + "Default]").each( //This is implemented in case of multiple select support. You will need to select nothing at first and then make this select each of this element
                function() {
                    selectElement.value = this.value;
                }
            );

        });
    }

);

Here, when you implement this using struts, populate the s:select, then use an s:hidden element to generate a corresponding default value.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文