我是使用Spring的新手,我花了几个小时在网上搜索,但我找不到可靠的答案。
使用spring 2.0,我有一个bean,其值由我的数据库表中的一列定义。但现在我只希望它在列中显示一部分数据。
原始数据如下所示:xxxxx.xxx 我只希望字符串的第一部分(在句号之前)出现在我的网页上。
我已经研究过delimitedlinetokenizer和项目处理器,但我不觉得我走在正确的道路上。任何指针都将非常感激
这是我目前定义的bean的方式:
<bean id="date" class= "ColumnDefinitionImpl">
<property name="column" ref="lastdate"/>
<property name="path" ref="MY_Data_Col"/>
</bean>
答案 0 :(得分:1)
正如Dave指出的那样,您可以使用Java从原始数据中获取所需的值,例如:
String originalData = //logic to get the entire value from your DB
String desiredValue = originalData; //If the original data does not contain "." then, the whole word is used.
//You can change it as you want
if(originalData != null){
int index = originalData.indexOf(".");
if(index != -1){
desiredValue = originalData.substring(0,index);
}
}
在此代码中,desiredValue
变量将包含您需要的数据
我希望这就是你想要的
编辑
根据您的评论,我认为您可以将此逻辑放入bean属性的设置器中:
private String dataWithoutDot;
//Getter here
//...
//Setter:
public void setDataWithoutDot(String originalData){
if(originalData != null){
int index = originalData.indexOf(".");
if(index != -1){
dataWithoutDot = originalData.substring(0,index);
}
}
}
编辑:根据您的评论,因为您无法访问ColumnDefinitionImpl
代码修改
我不知道这是否是最佳解决方案,但至少它应该有效:
<bean id="myFactoryBean"
class="path.to.a.package.CustomDataFactory">
<property name="path" ref="MY_Data_Col"/>
</bean>
您定义了一个新的工厂类:
public class CustomDataFactory{
private String path;
//getter and setter
//...
//Our factory method:
public String parseDataFromDB(){
if(path != null){
int index = path.indexOf(".");
if(index != -1){
return path.substring(0,index);
}
}
return path;
}
}
然后,bach到你的spring上下文文件:
<bean id="date" class= "ColumnDefinitionImpl">
<property name="column" ref="lastdate"/>
<property name="path">
<bean factory-bean="myFactoryBean" factory-method="parseDataFromDB">
</property>
</bean>