我们使用外部提供的HTML5源(响应式设计)。我们的挑战是使用Java添加逻辑,同时保留精确的HTML呈现。
我发现JSF Pass-Through在这种情况下很有帮助。
但我无法使用单选按钮。我不知道如何使用托管bean中的属性进行连接(示例中为“stringAttribute”)。在POST数据中,我看到所选单选按钮的值通过,但JSF没有在托管bean中设置它。
有人看到我在这里的尝试有什么问题吗?
或者这根本不受支持? (type =“radio”未出现在Oracle doc中的“表8-4 Facelets如何呈现HTML5元素”中)。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:jsf="http://xmlns.jcp.org/jsf"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough">
<h:form>
<input jsf:value="#{myBean.stringAttribute}" pt:value="firstChoice" pt:name="the-radio-group" type="radio"/>
<input jsf:value="#{myBean.stringAttribute}" pt:value="secondChoice" pt:name="the-radio-group" type="radio"/>
<h:commandButton type="submit" value="Submit" action="#{myBean.submit}"/>
</h:form>
或者你会怎么做?请记住,我有非常复杂的HTML,必须使用JSF完全呈现。为了给你一个想法,这是我想要制作的HTML:
<div class="form-group">
<div class="col-sm-12 mod-formelem">
<input data-enslaved-group="radio" data-enslaved-master="radio-1" id="___radio204_01___" name="___radio204___" type="radio"/>
<label class="mod-formelem--icon mod-icon icon-checkbox_checkmark_16" for="___radio204_01___"/>
<label class="mod-formelem--text" for="___radio204_01___">Option 1</label>
</div>
<div class="col-sm-12 mod-formelem">
<input data-enslaved-group="radio" data-enslaved-master="radio-2" id="___radio204_02___" name="___radio204___" type="radio"/>
<label class="mod-formelem--icon mod-icon icon-checkbox_checkmark_16" for="___radio204_02___"/>
<label class="mod-formelem--text" for="___radio204_02___">Option 2</label>
</div>
</div>
答案 0 :(得分:0)
这个问题已有两年没有得到解答,但问题仍然存在,因此可能值得痛苦地回答它,以便面临同样问题的其他开发人员从中受益。
使用JSF传递变量实现单选按钮似乎是不可能的。但是,像Bootstrap这样的CSS框架要求您使用与JSF生成的HTML代码不同的HTML代码。在这种情况下,您可以按this SO answer中所述模拟单选按钮。这个例子特别使用Bootstrap和BootsFaces,但这个想法也可以推广到其他框架。
答案 1 :(得分:0)
我认为并非不可能。您可以尝试这个解决方案: