0

我有这个 JSF 表,我用它来显示数据和编辑数据:

<table>
    <ui:repeat var="ud" value="#{DCProfileTabGeneralController.dcData}">

        <tr>
            <td>Datacenter Type</td>
            <td>
                <h:outputText value="#{ud.type}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.type}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Date Added</td>
            <td>
                <h:outputText value="#{ud.dateAdded}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText styleClass="datepicker" value="#{ud.dateAdded}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Hour Added</td>
            <td>
                <h:outputText value="#{ud.hourAdded}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.hourAdded}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Date Deployed</td>
            <td>
                <h:outputText value="#{ud.dateDeployed}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText styleClass="datepicker" value="#{ud.dateDeployed}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>
        <tr>
            <td>Hour Deployed</td>
            <td>
                <h:outputText value="#{ud.hourDeployed}" 
                              rendered="#{not DCProfileTabGeneralController.editable}" />
                <h:inputText value="#{ud.hourDeployed}" rendered="#{DCProfileTabGeneralController.editable}" />
            </td>                                    
        </tr>

    </ui:repeat>
</table>

该解决方案工作正常,但我想以这种方式扩展它:我想单击将编辑标志设置为 true 的按钮。当我将鼠标移到表的值上时,outputText 会更改为 inputText。

还有一个更简单的问题。如何在全球范围内为所有字段添加底部填充?

4

1 回答 1

0

我建议您使用Richfaces库并使用<rich:inplaceInput>如下组件。

<rich:inplaceInput value="hhhh" editEvent="onmouseover"/>

但是,如果您仍然喜欢坚持javascript这是一个概念。

<h:form id="myForm">
  <h:outputText value="aaa" id="outText"/><br/>
  <h:inputText value="aaa" style="display:none;" id="inText" />
</h:form>

这是javascript代码

<script>
    window.onload = function() {
        var outputText = document.getElementById("myForm:outText");
        var inputText = document.getElementById("myForm:inText");
        outputText.onmouseover = function() {
            outputText.style.display = 'none';
            inputText.style.display = '';
        }
        inputText.onblur = function() {
            outputText.style.display = '';
            inputText.style.display = 'none';
        }
    };
</script>

由于您使用的是ui:repeat,因此您应该相应地更改javascript代码。

于 2012-12-29T05:20:18.207 回答