我有问题使"数据库驱动的资源包"工作.在下面的示例中,TextDAO在应用程序启动期间正确注入,但是当messageSource访问时,Messages会创建一个新对象 - 这就是重点.如何使这项工作?
<!-- message source -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="someapp.bundle.Messages" />
</bean>
Run Code Online (Sandbox Code Playgroud)
Messages.java
@Component
public class Messages extends ListResourceBundle {
@Autowired
private TextDAO textDAO;
public Messages() {
log.debug("CONSTRUCTOR");
}
@Override
protected Object[][] getContents() {
// loading messages from DB
List<Text> texts = textDAO.findAll(); // textDAO is null
...
}
}
Run Code Online (Sandbox Code Playgroud)
至于Bozho建议我做了我的资源包下面,但有问题的动态重新装入.我认为ReloadableResourceBundleMessageSource用于属性文件,但也许可以使用它.
public class DatabaseDrivenMessageSource extends ReloadableResourceBundleMessageSource {
private Logger log = LoggerFactory.getLogger(getClass());
private final Map<String, Map<String, String>> properties …Run Code Online (Sandbox Code Playgroud) 什么是创建一个包含HTML(使用正确的编码),一个String对象(我想),我可以在返回列举了最简单,最快捷的方式@ResponseBody(Spring MVC的)?
我正在使用GWT(2.4)和Spring集成,如本文所述.从数据库(Hibernate)获取User列表并使用它填充DataGrid时遇到问题.当我调用greetingService.allUsers()方法时,我收到错误(onFailure()):
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException:无法反序列化响应
有人帮忙吗?下面是一些代码.完整的工作项目在这里.
public void onModuleLoad() {
// ...
greetingService.allUsers(
new AsyncCallback<List<User>>(){
@Override
public void onFailure(Throwable caught) {
caught.printStackTrace();
}
@Override
public void onSuccess(List<User> result) {
GWT.log("SIZE: "+result.size());
dataGrid.setRowData(result);
}
}
);
// ...
}
Run Code Online (Sandbox Code Playgroud)
GreetingServiceImpl
@Override
public List<User> allUsers() {
return userDAO.findAll();
}
Run Code Online (Sandbox Code Playgroud)
用户
@Entity
@Table(name = "users")
public class User implements Serializable, IsSerializable {
@Id
private Long id;
// only Strings and one Date
private String login;
private String password; …Run Code Online (Sandbox Code Playgroud) 我有例如.pdf文件(该文件的路径).如何在SWT应用程序的默认应用程序(可能是Acrobat Reader)中打开此文件(例如,单击按钮)?
我已经完成 merge some-branchinto master,但出现冲突。如何撤消这个操作?
git checkout master
git merge some-branch
...
CONFLICTS :(
Run Code Online (Sandbox Code Playgroud) 我有请求处理程序将文件从MongoDB(GridFS)发送到客户端,如下所示,但它使用data变量,因此内容在内存中.我需要在流模式下进行此操作并将文件以块的形式发送给客户端.我无法确定如何pipe缓冲响应.看看第二个代码 - 它不起作用,但展示我需要的东西.
也许它很有用:GridFS中的数据是Base64编码的,但如果流式传输效率更高,则可能会更改.
内存版本
router.get('/get/:id', function(req,res){
getById(req.params.id, function(err, fileId){
new GridStore(db, fileId, "r").open(function(err, gridStore) {
res.set('Content-Type', gridStore.contentType);
var stream = gridStore.stream(true);
var data = '';
stream.on("data", function(chunk) {
data += chunk;
});
stream.on("end", function() {
res.send(new Buffer(data, 'base64'));
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
流模式版本
router.get('/get/:id', function(req,res){
getById(req.params.id, function(err, fileId){
new GridStore(db, fileId, "r").open(function(err, gridStore) {
res.set('Content-Type', gridStore.contentType);
var stream = gridStore.stream(true);
stream.on("data", function(chunk) {
new Buffer(chunk, 'base64').pipe(res);
});
stream.on("end", function() {
res.end();
});
});
});
}); …Run Code Online (Sandbox Code Playgroud) 我有方法获取如下所示的bean属性列表.如何检查方法返回类型是集合(如List,Set ...).isInstance(Collection.class)不起作用.
public static List<String> getBeanProperties(String className, boolean withLists) {
ArrayList<String> a = new ArrayList();
try {
Class c = Class.forName(className);
Method methods[] = c.getMethods();
for (int i = 0; i < methods.length; i++) {
String m = methods[i].getName();
if(m.startsWith("get") && methods[i].getParameterTypes().length == 0) {
if((methods[i].getReturnType().isInstance(Collection.class)) && !withLists) {
// skip lists
} else {
String f = m.substring(3);
char ch = f.charAt(0);
char lower = Character.toLowerCase(ch);
f = lower + f.substring(1);
a.add(f);
}
}
}
} catch (Exception e) …Run Code Online (Sandbox Code Playgroud) 我需要将一些参数(在我的示例中为id)传递给f:ajax listener方法,但我不知道如何.有人帮忙吗?
<h:form>
<!-- need to pass id value -->
<input type="hidden" name="id" id="id" value="#{id}"/>
<h:selectOneMenu value="#{visibility}">
<f:selectItems value="#{visibilities}" var="e" itemValue="#{e}" itemLabel="#{e.name}" />
<f:ajax event="valueChange" render="@form" execute="@form" listener="#{bean.updateVisibility}" />
</h:selectOneMenu>
</h:form>
Run Code Online (Sandbox Code Playgroud)
豆:
class Bean {
Integer id;
public void setId() {
this.id = id;
}
public void updateVisibility(AjaxBehaviorEvent event) {
// passed id
log.debug(id);
}
}
Run Code Online (Sandbox Code Playgroud) 我需要在刷新时避免双重POST.所以我在这篇文章中使用POST/Redirect/GET模式(faces-redirect=true)和导航处理程序(@BalusC).当action方法返回时(如何在同一页面上),如何在JSF 2.0中使用该模式?它甚至可能还是我需要使用其他POST/Redirect/GET?我需要保持一个视图范围的bean,所以返回动作方法相同的视图(PRG工作)不是一个解决方案(导致丢失).nullview scope
查看test.xhtml:
<h:commandButton action="#{bean.send}"/>
Run Code Online (Sandbox Code Playgroud)
豆:
@ManagedBean
@ViewScoped
class Bean {
String send() {
// do something...
return null;
}
String send2() {
// do something...
return "test"; // view scope lost
}
}
Run Code Online (Sandbox Code Playgroud) 我有多个#{key}短语的文字.例如:
Lorem ipsum dolor sit amet, consectetur adipisicing #{key1}. Proin nibh
augue, suscipit a, scelerisque #{key1}, lacinia in, mi. Cras vel #{key2}.
Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam.
Quisque semper #{key3} at risus.
Run Code Online (Sandbox Code Playgroud)
我需要#{key}用相应的messageSource.getMessage(key, null, locale)(messageSource是org.springframework.context.MessageSource)替换所有值,但我不擅长正则表达式.如何构建正确的正则表达式?
示例:
#{texts.appName} need to replace with messageSource.getMessage("texts.appName", null, locale);
#{my.company} need to replace with messageSource.getMessage("my.company", null, locale);
Run Code Online (Sandbox Code Playgroud)