Backing Bean没有得到javascript发送的值

时间:2012-06-25 02:33:57

标签: java javascript jsf facelets managed-bean

我有三个下拉列表,其值已通过以下JavaScript函数复制到<h:inputHidden>个组件:

function getBirthDate() {
    var months = document.getElementById("months")
    var hidden1 =  document.getElementById("formsignup:monthField");
    hidden1.value = months.options[months.selectedIndex].text;
    var days = document.getElementById("days");
    var hidden2 = document.getElementById("formsignup:dayField");
    hidden2.value = days.options[days.selectedIndex].value;
    var years = document.getElementById("years");
    var hidden3 = document.getElementById("formsignup:yearField");
    hidden3.value = years.options[years.selectedIndex].value;
}

以下是三个<h:inputHidden>组件:

<h:inputHidden value="#{signupBean.month}" id="monthField"/>
<h:inputHidden value="#{signupBean.day}" id="dayField"/>
<h:inputHidden value="#{signupBean.year}" id="yearField"/>

这是一个命令按钮,它应该调用将值复制到输入的函数,然后将它们提交给辅助bean。

<h:commandButton image="images/images/signup1.png" 
     styleClass="joinnow" 
     id="joinus" action="#{signupBean.save}"
     onclick="getBirthDate()" />

但是它们以null的形式到达了支持bean。这是怎么造成的,我该如何解决?

编辑:当我尝试从JSF组件中选择元素时,jQuery会冻结。元素的ID是否有问题?

编辑:下面是与HTTP请求一起发送的变量的屏幕截图,它证明了值已正确发送。豆子有什么问题?

enter image description here

2 个答案:

答案 0 :(得分:0)

你可以检查你的bean的范围,以及它是否在你的提交过程中被重新标记..在这种情况下,无论是否从客户端发送值,隐藏字段都会获得其初始值。

答案 1 :(得分:0)

您可以使用警告语句检查对象是否存在。示例

function getBirthDate() {
var months = document.getElementById("months")
var hidden1 =  document.getElementById("formsignup:monthField");
alert(months);alert(months.value);
alert(hidden1);alert(hidden1.value);

如果Object值为null,则给出Id以获取元素不正确..还要检查从对象获取的值..我认为这可能会有所帮助