我有一个项目,我决定让它看起来更好。我学会了如何使用bootstrap,然后在我的一些页面上尝试。虽然在上做同样的事情,但xhtml页面,我的一些页面的按钮不能正常工作。下面是我的代码
中的一个例子我的add函数正在从接口使用:
@Override
public void add(Object object) {
Session session = factory.openSession();
session.beginTransaction();
session.save(object);
session.getTransaction().commit();
session.close();
}
,我在我的registerpage中这样使用它:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
template="/template/site.xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:define name="content">
<h:form>
<style>
.error{color:red}
</style>
<div class="form-group">
<label for="inputEmail4">Product name</label>
<h:inputText class="form-control" value="#{product_bean.p_name}"
id="name"
required="true"
requiredMessage="Product name can't be empty!"
>
<f:validator validatorId="only_letter_validator"/>
</h:inputText>
<h:message for="name" styleClass="error"/> <br></br>
</div>
<h:commandButton value="Save" action="#{products_controller.add(product_bean)}">
<f:actionListener binding="#{products_controller.setFactory()}"/>
</h:commandButton>
</h:form>
</ui:define>
</ui:composition>
我的命令按钮工作正常。下面是我的删除方法:
@Override
public void delete(int id) {
Session session = factory.openSession();
session.beginTransaction();
session.createQuery("delete from Product where id=" + id).executeUpdate();
session.getTransaction().commit();
session.close();
}
,我是这样使用它的:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
template="/template/site.xhtml">
<ui:define name="content">
<h2><h:outputText value ="Product List"></h:outputText></h2>
<h:dataTable styleClass="table table-striped" value = "#{products_controller.productsList}" rows="#{products_controller.productsList.size()}" var = "item" border="1" headerClass="tableHeader" >
<h:column>
<f:facet name="header"> ProductID </f:facet>
<h:outputText value="#{item.p_id}" />
</h:column>
<h:column>
<f:facet name="header"> Productname </f:facet>
<h:outputText value="#{item.p_name}" />
</h:column>
<h:column>
<f:facet name="header"> Product class </f:facet>
<h:outputText value="#{item.p_class}" />
</h:column>
<h:column>
<f:facet name="header" > Productprice </f:facet>
<h:outputText value="#{item.p_price}" />
</h:column>
<h:column>
<f:facet name="header"> ProductPP </f:facet>
<h:outputText value="#{item.p_property}" />
</h:column>
<h:column>
<f:facet name="header"> ProductTotal </f:facet>
<h:outputText value="#{item.p_total}" />
</h:column>
</h:dataTable>
<br></br><br></br>
<div>
Ürün ID Numarası <h:inputText value="#{deleteID}"
id="id"
required="true"
requiredMessage="Can not be empty!"
validator="#{inputValidators.OnlyLetter}"/>
<h:message for="id" styleClass="error"/>
<h:commandButton value="Delete" action="#{products_controller.delete(deleteID)}">
<f:actionListener binding="#{products_controller.setFactory()}"/>
</h:commandButton>
</div>
</ui:define>
</ui:composition>
实际上我认为它们是相同的,在我开始使用bootstrap之前它是工作的。一个在工作,另一个不行。有什么不同,或者我应该改变什么?我跟踪了它但什么也想不出来。
我找到了解决方案,看到很多人都在为这个问题而挣扎。所以我要分享。
如果你的命令按钮不在