无法使用xe:jdbcRowSet将数据保存到MySQL

时间:2013-03-28 17:22:07

标签: mysql xpages xpages-extlib

我正在尝试将数据从XPage保存到MySQL数据库。我建立了一个连接并且它可以工作(我的动态视图面板能够获取MySQL表中的数据这一事实证明了这一点)。但是我无法将数据提交给MySQL。我正在关注扩展库中的XPagesJDBC.nsf示例数据库。

MySQL连接文件mysqlconn.jdbc

<jdbc>
    <driver>com.mysql.jdbc.Driver</driver>
    <url>jdbc:mysql://***.***.***.***:3306/project_management</url>
    <user>adminuser</user>
    <password>******</password>
</jdbc>

在我的XPage中,我使用xe:jdbcRowSet

创建了一个数据源
<xp:this.data>
    <xe:jdbcRowSet var="jdbcrsProjectMgmt" connectionName="mysqlconn"
        sqlTable="project_details">
    </xe:jdbcRowSet>
</xp:this.data>

然后在我的xp:panel中,我使用数据源来保存对象。我有两个名称和描述字段映射到MySQL数据库中表中的各列。

<xp:panel>
    <xp:this.data>
        <xe:objectData var="row"
            saveObject="#{javascript:jdbcrsProjectMgmt.saveRow(row);}">
            <xe:this.createObject><![CDATA[#{javascript:var id = context.getUrlParameter("id");
if (id != null && !id.trim().equals("")) {
    jdbcrsProjectMgmt.getRow(parseInt(id) - 1);
} else {
    jdbcrsProjectMgmt.newRow(0);
}}]]></xe:this.createObject>
        </xe:objectData>
    </xp:this.data>
    <xp:table border="0" cellpadding="5" cellspacing="0">
        <xp:tr>
            <xp:td>Name</xp:td>
            <xp:td>
                <xp:inputText id="txtName" value="#{row.name}"></xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td>Description</xp:td>
            <xp:td>
                <xp:inputText id="txtDescription"
                    value="#{row.description}">
                </xp:inputText>
            </xp:td>
        </xp:tr>
        <xp:tr>
            <xp:td colspan="2" align="center">
                <xp:button value="Save" id="btnSave">
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="complete" immediate="false" save="false">
                        <xp:this.action>
                            <xp:actionGroup>
                                <xp:saveDocument var="row"></xp:saveDocument>
                                <xp:openPage
                                    name="/viewProject.xsp">
                                </xp:openPage>
                            </xp:actionGroup>
                        </xp:this.action>
                    </xp:eventHandler>
                </xp:button>
            </xp:td>
        </xp:tr>
    </xp:table>
</xp:panel>

当我尝试单击“保存”按钮时,不会保存数据并且不会显示错误。但如果我将Button type更改为Submit<xp:eventHandler ..... save="true">),则会给我错误:

Error saving data source jdbcrsProjectMgmt
javax.sql.rowset.spi.SyncProviderException: Can't call commit when autocommit=true
Can't call commit when autocommit=true

但这次奇怪的是数据被保存了。我找不到这个autocommit属性,也不知道在哪里设置它。我怎么解决这个问题?这是XPages还是MySQL的问题?

0 个答案:

没有答案