If you want to check the selected value on client side, you will need to define widgetVar
attribute for your p:selectOneRadio
, for example:
<p:selectOneRadio widgetVar="widgetSorType" id="sorType" value="#{bean.type}"
layout="custom">
<f:selectItem itemLabel="XML" itemValue="XML" />
<f:selectItem itemLabel="XLS" itemValue="XLS" />
<f:selectItem itemLabel="CSV" itemValue="CSV" />
</p:selectOneRadio>
This will allow the element to be easily found - you can then use it further to check which value was actually selected. I can see two options how to do it:
function getSelectedTypeVer1() {
return PF('widgetSorType').getJQ().find(':checked').val() || "";
}
function getSelectedTypeVer2() {
var inputs = PF('widgetSorType').inputs;
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].checked) {
return inputs[i].value;
}
}
return "";
}
Select whichever approach suits you better - both will return either the selected value or an empty string in case nothing has been selected. So all that remains is calling it in you button's onclick
, so for example:
<p:commandButton type="button" ajax="false"
onclick="return downloadFile(getSelectedTypeVer1());" />
Tested on PrimeFaces 5.2
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…