我正在使用spring JSF集成做项目我有@RequestScope bean具有某些属性,在表单(搜索应用程序)中提交后,我的相同bean的列表属性从db值填充并使用数据表在同一页面上查看(ajax应用于提交/搜索按钮)。我第一次搜索时得到的结果很好,但问题是当我在另一个浏览器页面中刷新或打开页面时,数据表仍然包含初始请求的数据,也从其他页面导航并返回同一页面仍然显示初始请求页面/数据为如果 requestscope 不工作而不是会话范围。我正在使用 spring 来管理 bean 及其创建,并使用 jsf 来管理前端页面。如果是这样的话,这可能是面部和弹簧注释混合的问题吗?这里的解决方案是什么?因为我还通过自动装配其他 bean 来使用 DAO 方法。例如
@ManagedBean(name="inputService")
@RequestScoped
public class InputService {
@Autowired
AdvancSearchDaoImpl Dao;
private String name;
private String bloodgroup;
private String dateofbirth;
List<Result> searchResults;
getter/setters of above attributes
public String outputService()
{
searchResults=Dao.getAdvacnceServiceSearch(name,bloodgroup,dateofbirth);
return "successful";
}
}
xhtml 是:
<div >
<h:dataTable id="tbl" value="#{inputService.searchResults}" var="o" styleClass="display">
<h:column>
#{o.name}
</h:column>
<h:column>
#{o.dateofbirth}
</h:column>
<h:column>
#{o.bloodgroup}
</h:column>
</h:dataTable>
</div>
<h:form>
<table>
<tr><td>Full Name</td>
<td>
<h:inputText value="#{inputService.name}" styleClass="text-box" />
</td></tr>
<tr><td>Date of Birth</td>
<td>
<h:inputText value="#{inputService.dateofbirth}" />
</td></tr>
<tr><td>Blood group</td>
<td>
<h:inputText value="#{inputService.bloodgroup}" />
</td></tr>
<tr><td colspan="2" align="right">
<h:commandButton id="btnServiceSearch" value="Search" action="#{inputService.outputService}" styleClass="submitButton" >
<f:ajax execute="@form" render="tbl"></f:ajax>
</h:commandButton> </td> </tr>
</h:form>
所有 bean 都在应用程序上下文中定义: