按 "more-Button" 时保留未提交的值

Keep non submitted values, when pressing "more-Button"

首先,我的场景:

我有一个包含多个输入字段的表单。其中一些默认隐藏,因为它们并不经常需要:

<h:form>
    <!-- with validators -->
    <h:inputText>...</h:inputText>
    <h:inputText>...</h:inputText>

    <!-- show this fields only when the user wants to -->
    <h:panelGroup rendered="#{!bean.hide}">
        <h:inputText>...</h:inputText>
        <h:inputText>...</h:inputText>
    </h:panelGroup>

    <h:commandButton value="Show / hide more fields" actionListener="#{bean.toogleHide}" />
    <h:commandButton value="Submit" />
</h:form>

这将是 bean:

@SessionScoped
@ManagedBean
public class Bean {
    // with getter
    private boolean hide = true;

    public void toogleHide(ActionEvent event) {
        hide = !hide;
    }
}

我想做的事情:

假设,用户在第一个输入字段中填写有效/无效数据。现在他想查看默认隐藏的其他输入字段。所以会按下命令按钮 "show / hide more fields"。

=> 有没有办法在按下 "show / hide more fields" 按钮时保留未提交的值?

我的建议是始终从您的 JSF 页面发送 "hidden fields",但默认情况下使用 CSS 将它们设为 display: none。然后 hide/unhide 他们只有 javascript,例如jQuery 或页面上的小 JS 脚本。整体将更加灵敏,而且您不会遇到正在与之抗争的问题。