小编mar*_*osh的帖子

Spring中的数据库驱动资源包

我有问题使"数据库驱动的资源包"工作.在下面的示例中,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)

RE-OPEN

至于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)

spring resourcebundle

6
推荐指数
1
解决办法
1万
查看次数

仅使用Java代码构建HTML

什么是创建一个包含HTML(使用正确的编码),一个String对象(我想),我可以在返回列举了最简单,最快捷的方式@ResponseBody(Spring MVC的)?

html java spring-mvc

6
推荐指数
2
解决办法
4万
查看次数

GWT:响应无法反序列化

我正在使用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)

gwt gwt2

6
推荐指数
2
解决办法
2万
查看次数

如何在SWT中使用默认应用程序打开文件?

我有例如.pdf文件(该文件的路径).如何在SWT应用程序的默认应用程序(可能是Acrobat Reader)中打开此文件(例如,单击按钮)?

java swt

6
推荐指数
1
解决办法
4296
查看次数

GIT:如何撤消合并?

我已经完成 merge some-branchinto master,但出现冲突。如何撤消这个操作?

git checkout master
git merge some-branch
...
CONFLICTS :(
Run Code Online (Sandbox Code Playgroud)

git git-merge

6
推荐指数
2
解决办法
7040
查看次数

在Express中将缓冲区传输到客户端

我有请求处理程序将文件从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)

node.js express

6
推荐指数
1
解决办法
1万
查看次数

如何检查java.lang.reflect.Method返回类型是Collection?

我有方法获取如下所示的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)

java reflection collections

5
推荐指数
1
解决办法
5381
查看次数

如何在ajax请求中传递h:selectOneMenu中的更改值的其他参数?

我需要将一些参数(在我的示例中为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)

java jsf jsf-2

5
推荐指数
2
解决办法
3万
查看次数

JSF 2.0:POST/Redirect/GET模式,当action方法返回null时(保持在同一页面上)

我需要在刷新时避免双重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)

jsf-2

5
推荐指数
1
解决办法
1910
查看次数

如何替换字符串中的所有#{key}?

我有多个#{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)(messageSourceorg.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)

java regex

5
推荐指数
1
解决办法
1298
查看次数