【问题标题】:make a button disable/enable base on java flg in the struts2根据struts2中的java标志使按钮禁用/启用
【发布时间】:2016-03-22 21:09:55
【问题描述】:

行动:

public class TuAction() extends ActionSupport{

    private boolean loseItemFlg=false;

    private String doFuilureOrder(){
        if(...){
           loseItemFlg=true;
        }
        return SUCCESS;
    }

    public boolean isLoseItemFlg() {
        return loseItemFlg;
    }

    public void setLoseItemFlg(boolean loseItemFlg) {
        this.loseItemFlg = loseItemFlg;
    }
}

还有我的 Jsp:

function dialogOpen(formName,actionName){
    if(comfirm("do you want do this?")){
        ....
        document.forms[formName].action=actionName;
        document.forms[formName].submit();
    }else{
        //i want do not reload the page.
    }
}
<input type="button" disable="%{loseItemFlg}" value="lose" 
    onclick="dialogOpen('tuAction', '<%request.getContextPath()%>/tuAction_doFuilureOrder.action')" 
/>

但是这段代码按钮的禁用属性不是由我控制的!! 然后我将jsp更改为:

<s:submit type="button" disable="%{loseItemFlg}" value="lose"
       onclick="dialogOpen('tuAction', '<%request.getContextPath()%>/tuAction_doFuilureOrder.action')" 
/>

现在按钮的 disable 属性由我控制,但 "doFuilureOrder()" 没有被使用。

关于不重新加载页面应该在我的jsp中做什么。

我的英语很糟糕,这是我第一次使用stackoverflow。有人知道我的意思。

【问题讨论】:

  • 这样的编码是不可能的。

标签: java html jsp struts2 struts-tags


【解决方案1】:

对于输入标签,disabled属性不基于真/假。当你写 disabled 属性时默认禁用输入,请检查Fiddle

<input type ='button' disabled='true' value='Button1'/>
<input type ='button' disabled='false' value='Button2'/>

在上面的代码中,两个按钮都处于禁用状态。

为了您的目的,我们可以将您的代码重写为:

方法一:

通过使用struts if标签

<s:if test="%{loseItemFlg}"> // if true - button disabled state
  <input type="button" disabled value="lose" onclick="dialogOpen('tuAction','<%request.getContextPath()%>/tuAction_doFuilureOrder.action')"/>
</s:if><s:else> //button enabled
   <input type="button" value="lose" onclick="dialogOpen('tuAction','<%request.getContextPath()%>/tuAction_doFuilureOrder.action')"/>
</s:else>

方法二:

重写你的java代码,

private String loseItemFlg='';

private String doFuilureOrder(){
    if(...){
       loseItemFlg="disabled";
    }
    return SUCCESS;
}
public String getLoseItemFlg() {
    return loseItemFlg;
}

public void setLoseItemFlg(String loseItemFlg) {
    this.loseItemFlg = loseItemFlg;
}

然后在jsp中:

 <input type = "button"
<s:property value="%{loseItemFlg}"/> value="lose" onclick = "dialogOpen('tuAction'),'<%request.getContextPath()%>/tuAction_doFuilureOrder.action')" />

【讨论】:

    【解决方案2】:

    您不能将 scriptlet 嵌套在 Struts 标签中(就像在第二种情况下一样),而您可以(但您不应该,因为使用 scriptlet 是一种不好的做法)将它们注入 HTML 标签中。

    然后您可以在 HTML 标记中使用&lt;s:property /&gt; 标记(第一种情况)

    <input type = "button"
        disable = "<s:property value="%{loseItemFlg}"/>" 
        onclick = "dialogOpen('tuAction'), '<%request.getContextPath()%>/tuAction_doFuilureOrder.action')" 
    />
    

    ,或者替换 Struts 标签中的 scriptlet(第二种情况),最好使用&lt;s:url /&gt; 标签挂载 URL:

    <s:url action = "tuAction_doFuilureOrder.action" 
        namespace = "/"
              var = "myUrl" 
    />        
    <s:submit type = "button" 
           disable = "%{loseItemFlg}" 
           onclick = "dialogOpen('tuAction'), '%{myUrl}')" 
    />
    

    它们都有效。

    &lt;s:url /&gt; 的用法也可以(并且应该)应用于第一种情况:

    <s:url action = "tuAction_doFuilureOrder.action" 
        namespace = "/"
              var = "myUrl" 
    />        
    <input type = "button" 
        disable = "<s:property value="%{loseItemFlg}"/>" 
        onclick = "dialogOpen('tuAction', '<s:property value="%{#myUrl}"/>')" 
    />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2019-07-17
      相关资源
      最近更新 更多