JSF h:JavaScript禁用了inputText,但未将值发送到托管bean

时间:2013-07-08 05:32:26

标签: javascript jsf jsf-1.2

我有一个代码在JSF1.2 jsp页面中使用java-script, 在复选框m禁用文本框n其工作正常。 但是当DB中有值时(示例_“15”在文本框中),如果我取消选中复选框_ m调用JS代码禁用加上为文本框分配“0.0”,当我点击保存其在DB中保存“15”并且我想要DB中的“0.0”(意味着它不是JS代码或事件上的更新bean)。 / p>

这是使用_

的元素
<f:subview id="PaymentRuleView" rendered="#{login.employee}">
<h:form enctype="multipart/form-data" id="PaymentRuleForm">
<x:div id="PaymentRuleDiv" styleClass="separateBox">
<h:selectBooleanCheckbox id="partReminder" onclick="hideText(id)" />
                <h:outputText styleClass="separateMargin" value="For Part Payment" />
                <h:inputText id="partReminderText"
                    value="#{SelectedBean.payment_1_reminder}"
                    size="3">
                </h:inputText>
</x:div>
</h:form>
</f:subview>

这是JS _

<script type="text/javascript">
    $(function(){
    var txt="PaymentRuleView:PaymentRuleForm:";
    var partTxt="partReminderText";
    var finalTxt="finalReminderText";
    if(document.getElementById(txt+partTxt).value>0)
    {
        document.getElementById(txt+"partReminder").checked=true;
        document.getElementById(txt+partTxt).readOnly = false;          
    }else{
        document.getElementById(txt+"partReminder").checked=false;
        document.getElementById(txt+partTxt).readOnly= true;
        document.getElementById(txt+partTxt).value = 0.0;
    }
    if(document.getElementById(txt+finalTxt).value>0 ){
        document.getElementById(txt+"finalReminder").checked = true;
        document.getElementById(txt+finalTxt).readOnly = false;
    }else{
        document.getElementById(txt+"finalReminder").checked=false;
        document.getElementById(txt+finalTxt).readOnly = true;
        document.getElementById(txt+finalTxt).value = 0.0;
    }
});

<script type="text/javascript">
    function hideText(e) {

        var value = document.getElementById(e).value;
        var textBox;
        if (e.indexOf("partReminder") != -1) {
            textBox = e.replace("partReminder", "partReminderText");
        } else {
            textBox = e.replace("finalReminder", "finalReminderText");
        }
        if (document.getElementById(e).checked!=true) {         
            document.getElementById(textBox).readOnly = true;
            document.getElementById(textBox).value = 0.0;
        }
        if (document.getElementById(e).checked==true) {
            document.getElementById(textBox).readOnly = false;
            document.getElementById(textBox).value = 0.0;
        }

    }
</script>

哪里有任何好友的想法或任何建议? 谢谢。

答案 我错过了“immediate = true”属性,其中帮助我将更改的值设置为bean 它现在看起来像_

<h:inputText id="partReminderText"
                    value="#{SelectedBean.payment_1_reminder}"
                    size="3" immediate="true">
                </h:inputText>

0 个答案:

没有答案