【发布时间】:2011-04-26 14:39:45
【问题描述】:
我发现自己经常做以下事情:
/**
* Redirect to a MVC controller&action
* @param controller
* @param action
*/
public void redirect(String controller, String action) {
redirect(controller, action, new HashMap<String, String>());
}
/**
* Redirect to a MVC controller&action with extra URL parameters
* @param controller
* @param action
* @param data
*/
public void redirect(String controller, String action, Map<String, String> data) {
String urlParameters = "";
for(String key : data.keySet()) {
urlParameters += "&" + key + "=" + data.get(key);
}
m_binder.putLocal("RedirectParams", "IdcService=MVC_FRONTCONTROLLER&controller="+controller+"&action="+action + urlParameters);
}
要调用第二种方法,我实际上需要创建一个 hashmap 来在其中添加数据,我想知道是否有更方便的方法来实现这一点?
如您所见,我需要知道键和值,所以 varargs 不起作用(据我所知)。
我对所有想法持开放态度,包括使用反射。
【问题讨论】:
-
我认为您为自己找到了“最先进”的解决方案
-
这是一个非常不方便的解决方案。
-
我觉得多写 3 行代码没那么极端……
-
切换到 C# 4.0 或 JavaScript。他们对这种模式有一个非常方便的符号......
-
@Lukas Eder - 这与 3 行额外的代码无关,请考虑在每次调用时执行的迭代以及内存消耗(顺便说一下,您使用字符串连接从而创建了很多您要丢弃的临时字符串——考虑使用 StringBuilder 代替吗?)