根据 struts2 中的 java flg 创建一个按钮 disable/enable
make a button disable/enable base on java flg in the struts2
操作:
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')"
/>
现在按钮的禁用属性由我控制,但"doFuilureOrder()"
未被使用
关于不重新加载页面应该做什么在我jsp。
我的英语很糟糕,这是我第一次使用Whosebug。有人知道我的意思。
你不能在 Struts 标签中嵌套 scriptlet(就像你的第二种情况),而你可以(但你不应该,因为使用 scriptlet 是一种不好的做法)将它们注入 HTML 标签。
然后您可以在 HTML 标签中使用 <s:property />
标签(第一种情况)
<input type = "button"
disable = "<s:property value="%{loseItemFlg}"/>"
onclick = "dialogOpen('tuAction'), '<%request.getContextPath()%>/tuAction_doFuilureOrder.action')"
/>
,或者替换 Struts 标签中的脚本(第二种情况),最好使用 <s:url />
标签来挂载 URL:
<s:url action = "tuAction_doFuilureOrder.action"
namespace = "/"
var = "myUrl"
/>
<s:submit type = "button"
disable = "%{loseItemFlg}"
onclick = "dialogOpen('tuAction'), '%{myUrl}')"
/>
它们都有效。
<s:url />
用法也可以(并且应该)应用于第一种情况:
<s:url action = "tuAction_doFuilureOrder.action"
namespace = "/"
var = "myUrl"
/>
<input type = "button"
disable = "<s:property value="%{loseItemFlg}"/>"
onclick = "dialogOpen('tuAction', '<s:property value="%{#myUrl}"/>')"
/>
对于input标签,disabled 属性不是基于true/false。当你写 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')" />
操作:
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')"
/>
现在按钮的禁用属性由我控制,但"doFuilureOrder()"
未被使用
关于不重新加载页面应该做什么在我jsp。
我的英语很糟糕,这是我第一次使用Whosebug。有人知道我的意思。
你不能在 Struts 标签中嵌套 scriptlet(就像你的第二种情况),而你可以(但你不应该,因为使用 scriptlet 是一种不好的做法)将它们注入 HTML 标签。
然后您可以在 HTML 标签中使用 <s:property />
标签(第一种情况)
<input type = "button"
disable = "<s:property value="%{loseItemFlg}"/>"
onclick = "dialogOpen('tuAction'), '<%request.getContextPath()%>/tuAction_doFuilureOrder.action')"
/>
,或者替换 Struts 标签中的脚本(第二种情况),最好使用 <s:url />
标签来挂载 URL:
<s:url action = "tuAction_doFuilureOrder.action"
namespace = "/"
var = "myUrl"
/>
<s:submit type = "button"
disable = "%{loseItemFlg}"
onclick = "dialogOpen('tuAction'), '%{myUrl}')"
/>
它们都有效。
<s:url />
用法也可以(并且应该)应用于第一种情况:
<s:url action = "tuAction_doFuilureOrder.action"
namespace = "/"
var = "myUrl"
/>
<input type = "button"
disable = "<s:property value="%{loseItemFlg}"/>"
onclick = "dialogOpen('tuAction', '<s:property value="%{#myUrl}"/>')"
/>
对于input标签,disabled 属性不是基于true/false。当你写 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')" />