【问题标题】:Set default value in <s:checkbox> tag在 <s:checkbox> 标签中设置默认值
【发布时间】:2022-02-02 22:00:25
【问题描述】:

我正在使用 Struts 2.3 的 &lt;s:checkbox&gt; 以下是代码行

<s:checkbox  theme="simple" name ="Mychkbox" value="R" onclick="Auto_Au('rej');"/>

现在我需要这个值,但我没有找到任何方法来设置这个值"R",因为 &lt;s:checkbox&gt; 的 fieldValue 参数将给出 true 或 false。

我需要将值设置为'R',可以在操作类中访问。

【问题讨论】:

    标签: checkbox struts2 struts-tags


    【解决方案1】:

    如果您使用的是私有布尔 Mychkbox;它给出的结果如 true 或 false。将其更正为 String 数据类型的布尔值。

    您的值必须设置在 fieldValue="R"

    action.jsp

        <s:form action="mylogin">
         <s:checkbox  theme="simple" name ="Mychkbox" fieldValue="R" value="true" onclick="Auto_Au('rej');"/>
         </s:form>
    

    MyAction.class

        private String Mychkbox;
         public String execute() throws Exception {
              System.out.Println(" vaue : "+Mychkbox);
         }
    

    值属性-布尔类型。(UI组件值集)

    fieldValue属性--字符串类型(Mychkbox的值)

    【讨论】:

      【解决方案2】:

      &lt;s:checkbox name="checkMe" fieldValue="true" label="Check Me for testing"/&gt; 这是 Checkbox 的语法。通过使用相同的名称(此处名称为“checkMe”)并在动作类中为其添加 getter 和 setter 方法,我们可以在动作类中获取此值。 例子:我的Action.class

      private String checkMe;
      
      public String getCheckMe() {
              return checkMe;
          }
      public void setCheckMe(String checkMe) {
              this.checkMe = checkMe;
          }
      

      通过使用 getCheckMe() 方法我们可以得到复选框'checkMe'的值。

      在您的示例中,使用“mychkbox”而不是“checkMe”。 这个网站有一个简单的例子/Struts 2 checkbox Checkbox Example

      【讨论】:

        【解决方案3】:

        您需要使用以下设置器在目标操作中添加一个属性

        setMychkbox(String mychkbox){
            this.mychkbox = mychkbox;
        }
        

        但您在 name 属性中使用了大写字母,这将阻止 Struts2 正确映射。

        改成

        <s:checkbox theme="simple" name ="mychkbox" value="R" onclick="Auto_Au('rej');"/>
        

        以m 开头的小写字母使其工作。

        【讨论】:

          【解决方案4】:

          默认提交的checkbox输入字段的值设置为true。您可以通过提供checkbox 标记的fieldValue 属性来更改此设置。例如

          <s:checkbox  theme="simple" name ="mychkbox" fieldValue="R" onclick="Auto_Au('rej');"/>
          

          如果你想预设输入元素的值,你应该提供一个value 属性。例如

          <s:checkbox  theme="simple" name ="mychkbox" fieldValue="R" value="%{mychkbox}" onclick="Auto_Au('rej');"/>
          

          请注意,为了提高可读性,我更改了该字段的名称。要将字段名称映射到操作 bean,您应该为 mychkbox 提供一个属性。

          private String mychkbox;
          
          public String getMychkbox() {
            return mychkbox;
          }
          
          public void setMychkbox(String mychkbox) {
            this.mychkbox= mychkbox;
          } 
          

          拦截器的默认堆栈包括checkbox interceptor,您应该为其指定uncheckedValue参数。为此,您应该覆盖拦截器的参数

          <interceptor-ref name="checkbox">
            <param name="uncheckedValue">undefined</param>
          </interceptor-ref>
          

          【讨论】:

            猜你喜欢
            • 2022-10-14
            • 1970-01-01
            • 1970-01-01
            • 2013-07-22
            • 2011-04-14
            • 2016-10-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-24
            相关资源
            最近更新 更多